我有一个父类,它包含某种类型的列表,并具有向这些列表添加对象的功能.它是一个抽象类,我永远不会实例化它,而只是将其用作其他子类的蓝图.(那就继承ABC
个吧?)
但是我希望,这个父类的一些函数不能直接在Child类上调用.我试着引发了一个异常,但是我不需要为所有的子类做这个样板,这是我不想要的.我还try 了一个装饰符,它引发了异常,但当我在子类中为super().__init__()
时,我不能执行初始的列表添加,因为这不会执行Parents类.
class Parent():
def __init__(self, name:str = None, some_list=[]):
self.name = name
self.important_list = []
for i in some_list:
self.add_to_list(i)
def add_to_list(self, x):
... # important list manipulation etc
@predefined
class Child(Parent):
def __init__(self, name:str = None, some_list=[]):
super().__init__(name, some_list)
def add_to_list(self, x):
raise NotImplementedError # this function call shall be prohibited on the child!
def predefined(cls):
@functools.wraps(cls, updated=())
class Predefined(cls):
def add_to_list(self, x): raise NotImplementedError
return Predefined
我应该使用哪种设计?谢谢!