2
是否有辦法讓所有班級的繼承詞典?班級子類詞典
喜歡的東西
class MagikClass :
pass
class A(MagikClass) :
__name__ = "A"
print magik_dict # -> { "A": A }
是否有辦法讓所有班級的繼承詞典?班級子類詞典
喜歡的東西
class MagikClass :
pass
class A(MagikClass) :
__name__ = "A"
print magik_dict # -> { "A": A }
這裏是增加了一個屬性_derived
每個類,包含類的派生類的解決方案:
class Meta(type):
def __new__(cls, name, bases, dict_):
new_class = type.__new__(cls, name, bases, dict_)
new_class._derived = {}
if isinstance(bases[0], Meta):
bases[0]._derived[name] = new_class
return new_class
class Magic(object):
__metaclass__ = Meta
class A(Magic):
pass
class B(Magic):
pass
print Magic._derived
打印
{'A': <class '__main__.A'>, 'B': <class '__main__.B'>}
感謝您的回答(: – uhbif19 2011-04-26 15:02:01
什麼問題用grep? 'grep'類。* MagikClass'* .py'好像完全可以工作。 – 2011-04-26 14:45:42
@ S.Lott對於這個問題的明顯延伸,它不起作用:'B類(A):'。此外,如果python程序的其他部分要處理這些信息,則必須使用子進程和解析來獲取信息,這不像下面的解決方案那樣優雅。 – 2011-04-26 14:52:22