假设我有一个基类如下:
class User:
user_types = []
def __init__(self, name, age):
self.name = name
self.age = age
然后我想创建一个子类,然后将其添加到 user_types
class Farmer(User):
def harvest(self):
print("%s just harvested his plantation!" %self.name)
现在我可以通过简单的说实现我想做的事情
User.user_types.append(Farmer)
但是如果我希望它是自动的,并且对每个子类都完成,我该如何实现呢?假设将有 400 个子类,手动为所有子类执行此操作会很痛苦。
请您参考如下方法:
新样式类具有此功能:
>>> User.__subclasses__()
[<class '__main__.Farmer'>]
如果您使用的是 Python 2.x,只需让 User 继承自 object。
如果你需要每个子类的所有子类,你仍然可以用这个避免元类:
def get_subclasses(c):
subs = set(c.__subclasses__())
return subs.union(*(get_subclasses(i) for i in subs))
