Skip to main content
 首页 » 编程设计

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

2025年05月04日17txw1958

假设我有一个基类如下:

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