繁体   English   中英

使用__init_subclass__进行实现检查

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM