Допустим, у меня есть,Как ограничить разрешение метода только одним родителем в множественном наследовании 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.
Помимо переопределения обоих методов в C, я не вижу хорошего способа сделать это. Вопрос в том, почему вы хотите это сделать. – Paul
Это звучит неплохо. Вы уверены, что не хотите иметь, скажем, заводскую функцию, которая возвращает экземпляр 'A' или экземпляр' B'? Наследование - это не всегда ответ. – user2357112