Начните с переопределения классов A, B и C следующим образом. Обратите внимание, что вам также нужно передать значение type
из подкласса в конструктор суперкласса через super().__init__()
class A():
def __init__(self, type):
...
self.type = type # this will be something that corresponds to either B or C
class B:
def __init__(self, type):
super().__init__(type)
def do_something(self):
print('do_something called for B')
class C:
def __init__(self, type):
super().__init__(type)
def do_something(self):
print('do_something called for C')
Затем создайте другой класс, который может принять решение, вызывать ли вам B и C, и сохраните этот объект локально
class User:
def __init__(self, type):
self.obj = None
if type == 'B':
self.obj = B(type)
elif type == 'C':
self.obj = C(type)
Затем вы можете создать экземпляр класса пользователя с разными типами и увидеть, что вызывается правильный do_something
.
user_B = User('B')
user_B.obj.do_something()
#do_something called for B
user_C = User('C')
user_C.obj.do_something()
#do_something called for C