簡體   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