如何在 python 多重继承中将方法解析限制为仅一个父级



假设我有,

class A(object):
    def __init__(self, var):
        print("The parent class is A")
    def methodA(self):
        print("This method should only be accessed by a child of class A")
class B(object):
    def __init__(self, var):
        print("The parent class is B")
    def methodB(self):
        print("This method should only be accessed by a child of class B")
class C(A, B):
    def __init__(self, var):
        # if var=='a':
        #     make this class the child of only class A
        #     i.e. it should only access methods of class A
        #     and forget methods of class B.
        # if var=='b':
        #     make this class the child class B
        #     i.e. it should only access methods of class B
        #     and forget methods of class A.
        pass 

我怎样才能做到这一点?准确地说,我想创建一个派生自两个类的类,但根据输入参数,我想禁用其中一个类并仅使用另一个类的属性。所以我得到了这个,

>>> c = C('a')
>>> c.methodA()
This method should only be accessed by a child of class A
>>> c.methodB()
# A not implemented error or a maybe a custom error message.

如果您想这样做,我会推荐 user2357112 在评论中建议的工厂方法:

def C(parameter):
    if parameter == "a":
        return(A())
    else:
        return(B())

当然,这些不是子类,所以如果你想向它添加方法/属性,你需要更多的魔法。您可能可以通过元类实现它。

相关内容

  • 没有找到相关文章

最新更新