强制子类实现 属性 python

force subclass to implement property python

尝试了 force-implementing-specific-attributes-in-subclass

的答案

但是不起作用。此代码仍然通过且没有错误。

#python version: 3.8.1
from abc import ABC, abstractmethod

class A(ABC):
    @property
    @abstractmethod
    def pr(self):
        return 0
    
class B(A):
    def pr(self):# not a property.
        return 5
    
b = B()

print(b.pr())

那么如何强制子类实现特定的属性(pr 如上所述)?

代码没有错误地通过了,因为你在子class中给出了抽象方法的具体实现,看起来(不确定)它是唯一的东西abc关心。此外,如果您覆盖,则无法自动应用来自父 class 的相同装饰器,您必须重复 属性 装饰器语法。

我发现的最好的线程是 and this。请完整阅读。

另外,最近有个Pythonbug,貌似关了没解决(还是重开?)。也在那里阅读完整的线程。有趣且相关。