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