【问题标题】:Python inheritance - going from base class to derived onePython继承——从基类到派生类
【发布时间】:2012-12-10 11:01:37
【问题描述】:

给定一个class 和其他直接或间接扩展它的类。有没有办法得到所有直接扩展原始类的类。

class Alpha(object):
    @classmethod
    def get_derivatives(cls):
        return [Beta, ] # when called from Alpha
        return [] # when called from Beta

class Beta(Alpha):
    pass

我猜会有一些并发症,或者完全不可能。必须有一些关于派生类在哪里定义的规范,这会使事情变得棘手......

最好将派生类硬编码到基类中吗?

【问题讨论】:

    标签: python inheritance derived-class


    【解决方案1】:

    也许你正在寻找__subclasses__ method

    class Alpha(object):
        @classmethod
        def get_derivatives(cls):
            return cls.__subclasses__() 
    
    class Beta(Alpha):
        pass
    
    print(Alpha.get_derivatives())
    print(Beta.get_derivatives())
    

    产量

    [<class '__main__.Beta'>]
    []
    

    【讨论】:

    • 这看起来正是我所需要的,谢谢。这包括当前导入的每个类,还是包括哪些?
    • cls.__subclasses__ 将列出派生自cls 的所有类(已定义)。 (请注意,__subclasses__ 是一种仅适用于新型类(即派生自 object 的类)的方法。这不适用于经典类。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 2014-12-23
    • 2020-02-23
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多