我有一个项目,其中有一个基类和一堆派生类。实际上,主要是为了确保我不会忘记要实施某种方法实现检查的任何内容。我想知道这是否有意义,以及与继承是否存在任何潜在冲突。
class Base:
def __init_subclass__(cls, **kwargs):
super().__init_subclass__()
for prop in ['prop_to_check']: # extend this list for additional properties to check
if not hasattr(cls, prop):
raise NotImplementedError(f'{prop} is not implemented on {cls.__name__}')
class Derived(Base):
prop_to_check = 3
pass
class Derived2(Base):
pass
Derived()
Derived2()
欢呼 法比安
答案 0 :(得分:1)
唯一的缺点是可读性。要对您的类进行子类化,必须阅读(并理解)__init_subclass
函数。另一方面,您可以只写
class Base(abc.ABC):
@abc.abstractproperty
def x(self):
"""children MUST implement this"""