Я просмотрел много вопросов, опубликованных здесь, чтобы найти ответ на мою проблему, но мне не удалось. Проблема может быть в том, что я просто не знаю, по каким ключевым словам я должен искать. Поэтому моя проблема заключается в следующем:
У меня есть программа, которая имеет многоуровневое наследование, и я пытаюсь выяснить, как лучше всего было бы изменить класс объекта на подкласс. Допустим, у меня есть следующий код:
class A(object):
def __init(self, filename, ..)
super(A, self).__init__()
...some assignments here
class B(A):
def __init(self, filename, ..)
super(B, self).__init__()
...some assignments here
class C(A):
def __init(self, filename, ..)
super(C, self).__init__()
...some assignments here
и так далее ...
Я всегда хочу начать инициализацию объекта класса А. В зависимости от типа используемого файла, назначения могут различаться, и в зависимости от этих назначений я могу определить, какой это тип файла. Поэтому теперь я хочу изменить класс объекта на любой подходящий класс ..
Я знаю, что мог передать объект A в B или C и использовать copy или deepcopy, но в A я назначаю объект, ссылка на который не должна изменяться, и некоторые другие, где он должен меняться. Также мне нужно будет удалить этот объект A после инициализации B или C.
class B(A):
def __init__(self, filename, objA = None):
if objA is not None:
self.__dict__ = copy.deepcopy(objA.__dict__)
del(objA)
else:
super(B, self).__init__(filename)
Также существует другая возможность, изменив атрибут _ class на другой класс и используя какой-то метод обновления нового класса.
Я хотел бы знать, какой из двух подходов рекомендуется или есть даже лучший. Заранее спасибо.