Условное наследование на основе аргументов в PythonPython

Программы на Python
Ответить
Anonymous
 Условное наследование на основе аргументов в Python

Сообщение Anonymous »

Будучи новичком в ООП, я хотел знать, есть ли какой-либо способ наследовать один из нескольких классов в зависимости от того, как дочерний класс вызывается в Python. Причина, по которой я пытаюсь это сделать, заключается в том, что у меня есть несколько методов с одним и тем же именем, но в трех родительских классах, которые имеют разные функциональные возможности. Соответствующий класс должен быть унаследован на основе определенных условий во время создания объекта.
Например, я пытался заставить класс C наследовать A или B в зависимости от того, были ли переданы какие-либо аргументы. в момент создания экземпляра, но тщетно. Может ли кто-нибудь предложить лучший способ сделать это?

Код: Выделить всё

class A:
def __init__(self,a):
self.num = a

def print_output(self):
print('Class A is the parent class, the number is 7',self.num)

class B:
def __init__(self):
self.digits=[]

def print_output(self):
print('Class B is the parent class, no number given')

class C(A if kwargs else B):
def __init__(self,**kwargs):
if kwargs:
super().__init__(kwargs['a'])
else:
super().__init__()

temp1 = C(a=7)
temp2 = C()

temp1.print_output()
temp2.print_output()
Требуемый вывод будет следующим: «Класс A — родительский класс, номер — 7», за которым следует «Класс B — родительский класс, номер не указан».
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/657 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»