gpt4 book ai didi

python - 在 Python 中创建子类时将子类添加到父类(super class)列表?

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:52 25 4
gpt4 key购买 nike

假设我有一个基类如下:

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))

关于python - 在 Python 中创建子类时将子类添加到父类(super class)列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12874800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com