Python 类子类词典
是否有一种方法可以制作所有类继承的字典 差不多Python 类子类词典,python,oop,Python,Oop,是否有一种方法可以制作所有类继承的字典 差不多 class MagikClass : pass class A(MagikClass) : __name__ = "A" print magik_dict # -> { "A": A } 下面是一个解决方案,它向每个类添加一个属性\u derived,其中包含该类的派生类: class Meta(type): def __new__(cls, name, bases, dict_):
class MagikClass :
pass
class A(MagikClass) :
__name__ = "A"
print magik_dict # -> { "A": A }
下面是一个解决方案,它向每个类添加一个属性
\u 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'>}
{'A':,'B':}
格雷普怎么了grep'class.*MagikClass'*.py
似乎可以完美地工作。@S.Lott对于问题的明显扩展不起作用:class B(A):
。此外,如果python程序的其他部分要处理此信息,则必须使用子流程和解析来获取信息,这远不如下面的解决方案那么优雅。