[英]Use __init_subclass__ for implementation checking
我有一个项目,其中有一个基类和一堆派生类。 实际上,主要是为了确保我不会忘记要实施某种方法实现检查的任何内容。 我想知道这是否有意义,以及与继承是否存在任何潜在冲突。
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()
干杯法比安
唯一的缺点是可读性。 要对您的类进行子类化,必须阅读(并理解) __init_subclass
函数。 另一方面,你可以写
class Base(abc.ABC):
@abc.abstractproperty
def x(self):
"""children MUST implement this"""
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.