我有一個工廠函數,它定義了幾個類並將它們返回到列表中。是否有可能獲得這樣一個列表,其中的類按其定義的順序出現?按照定義的順序獲取範圍對象
以下工廠使用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'>]
不,不無反思的源代碼和猜測從該訂單。你爲什麼需要一個特定的訂單? –
類中模型組件的順序很重要,我寧願不必在類定義中指定每個組件的位置。 –