여러 클래스를 정의하고이를 목록으로 반환하는 팩토리 함수가 있습니다. 클래스가 정의 된 순서대로 나타나는 목록을 얻을 수 있습니까?정의 된 순서대로 범위에있는 객체 가져 오기
다음 팩토리는 범위에 정의 된 클래스를 얻기 위해 locals()
을 사용하지만 locals()
은 사전을 반환하므로 명확한 순서가 없습니다.
import inspect
def factory() :
class Base(object):
pass
class A(Base):
pass
class B(Base):
pass
class C(Base):
pass
local_classes = [obj for obj in locals().values() if inspect.isclass(obj)]
return [cls for cls in local_classes if issubclass(cls, Base)]
factory()
# [<class '__main__.A'>, <class '__main__.Base'>, <class '__main__.C'>, <class '__main__.B'>]
원하는 출력 내가이 문제에 걸쳐 몇 번 왔어요
# [<class '__main__.Base'>, <class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>]
아니, 소스 코드를 introspecting 그에서 순서를 추측하지 않고. 왜 특정 주문을해야합니까? –
클래스는 순서가 중요한 시스템 구성 요소를 모델링합니다. 클래스 정의에서 각 구성 요소의 위치를 지정하지 않아도됩니다. –