Проблемы наследования Python и перегрузкиPython

Программы на Python
Ответить
Гость
 Проблемы наследования Python и перегрузки

Сообщение Гость »


У меня есть родительский класс, который содержит какие-то списки и имеет функции для добавления объектов в эти списки. Это скорее абстрактный класс, экземпляр которого я никогда не буду создавать, а буду использовать только в качестве образца для других дочерних классов. (Может быть, тогда унаследовать ABC?)

Но я хочу, чтобы некоторые функции этого родительского класса нельзя было напрямую вызывать в дочернем классе. Я попробовал это, создав исключение, но тогда мне нужно было сделать этот шаблон для всех дочерних классов, чего я не хочу. Я также попробовал декоратор, который вызывает исключение, но тогда я не могу выполнить начальное добавление списка, когда я super().__init__() в дочернем классе, поскольку это не выполняет родительский класс .

class Parent(): def __init__(self, name:str = None, some_list=[]): self.name = имя self.important_list = [] для меня в some_list: self.add_to_list(i) защита add_to_list(self, x): ... # важные манипуляции со списком и т. д. @предопределено класс Ребенок (Родитель): def __init__(self, name:str = None, some_list=[]): super().__init__(имя, некоторый_список) защита add_to_list(self, x): поднять NotImplementedError # этот вызов функции должен быть запрещен для дочернего элемента! предопределенное определение (cls): @functools.wraps(cls, обновлено=()) Предопределенный класс (cls): def add_to_list(self, x): поднять NotImplementedError возврат Предопределенный Какой дизайн мне использовать? Спасибо!
Ответить

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

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

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

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

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