【问题标题】:How to access in base class method a certain class attributes all derived classes?如何在基类方法中访问某个类属性的所有派生类?
【发布时间】:2022-11-23 01:43:03
【问题描述】:

我有一个这样的类层次结构:

class C:
    keys = {1}
    def get_keys(self):
        return C.keys + self...    # ???
class D(C):
    keys = {2,3}
class E(D):
    keys = {4,5}

我想访问所有派生类(从self.__class__C)的所有keys 内容并将其收集在一起,而不需要向任何派生类添加任何额外的代码。 在这个例子中,我希望E().get_keys()返回{1,2,3,4,5}。 我想从self 开始应该是可行的,但我不确定我应该如何遍历整个继承链。 有人能帮忙吗?

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    让每个类将其键添加到从父级继承的集合中。然后在方法中使用self.keys

    class C:
        keys = {1}
        def get_keys(self):
            return self.keys
    
    class D(C):
        keys = C.keys | {2,3}
    
    class E(D):
        keys = D.keys | {4,5}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 2015-04-28
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      相关资源
      最近更新 更多