如何为父级跳过对祖先属性的访问权限

时间:2017-12-15 15:31:26

标签: python oop inheritance

假设我有低于等级(非常简化)

class Ancestor:
    def __init__(self, *args, **kwargs):
        super(Ancestor, self).__init__(*args, **kwargs)
        self.a = 1    

我不希望其Child有权访问a属性

class Child(Ancestor):
    def __init__(self, *args, **kwargs):
        super(Ancestor, self).__init__(*args, **kwargs)
        self.b = 2

但我希望其Descendant能够同时访问ab

class Descendant(Child):
    def __init__(self, *args, **kwargs):
        super(Descendant, self).__init__(*args, **kwargs)

有没有办法获得所需的行为并避免多重继承,例如class Descendant(Ancestor, Child)

1 个答案:

答案 0 :(得分:1)

这似乎是多重继承的情况。孩子不应该继承祖先,但是后代可以从两者继承:

class Child:
    ...

class Descendant(Ancestor, Child):
    ...