【发布时间】:2021-11-08 23:16:19
【问题描述】:
我有一个抽象基类,它使用一个值,它在不同的具体类中的实现可以是属性或属性:
from abc import ABC, abstractmethod
class Base(ABC):
n: int
def foo(self):
...
a = ... + self.n
@abstractmethod
def bar(self):
...
class X(Base):
def __init__(self, n: int):
self.n = n
def bar(self):
...
class Y(Base):
@property
def n(self) -> int:
...
def bar(self):
...
上面的代码(大纲,适当填写),在运行时工作,但mypy抱怨Y中的属性:
error: Signature of "n" incompatible with supertype "Base"
但是,由于foo,我无法删除n: int,也无法放入抽象属性,因为这会破坏X。我应该如何声明基类以使 mypy 满意?
【问题讨论】:
标签: python properties mypy python-typing abc