python怎么创建子类_Python:如何在创建时使用父类注册所有子类
您可以使用元類:
class AutoRegister(type):
def __new__(mcs, name, bases, classdict):
new_cls = type.__new__(mcs, name, bases, classdict)
#print mcs, name, bases, classdict
for b in bases:
if hasattr(b, 'register_subclass'):
b.register_subclass(new_cls)
return new_cls
class AbstractClassA(object):
__metaclass__ = AutoRegister
_subclasses = []
@classmethod
def register_subclass(klass, cls):
klass._subclasses.append(cls)
@classmethod
def get_concrete_classes(klass):
return klass._subclasses
class ConcreteClassA1(AbstractClassA):
pass
class ConcreteClassA2(AbstractClassA):
pass
class ConcreteClassA3(ConcreteClassA2):
pass
print AbstractClassA.get_concrete_classes()
我個人非常警惕這種魔法.不要在代碼中加入太多內容.
總結
以上是生活随笔為你收集整理的python怎么创建子类_Python:如何在创建时使用父类注册所有子类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 状态输出导航栏html,css3与htm
- 下一篇: websocket python爬虫_p