【发布时间】:2018-02-02 11:50:00
【问题描述】:
我在 Python 的打字系统和 __slots__ 之间遇到了冲突。这是一个可重现的小例子。
from typing import TypeVar, Generic, Sequence
T = TypeVar("T")
class TestGeneric(Sequence, Generic[T]):
__slots__ = ("test",)
def __init__(self, test: T):
self.test = [test]
def __iter__(self):
return iter(self.test)
def __len__(self):
return len(self.test)
def __contains__(self, item):
return item in self.test
def __getitem__(self, _):
return self.test[0]
现在每当我尝试指定内容类型时,例如
V = TestGeneric[int]
我明白了
ValueError: 'test' in __slots__ conflicts with class variable
我在没有插槽的类中经常使用Generics,因此我认为这个错误必须与__slots__ 相关联。此外,如果您删除 __slots__
【问题讨论】:
标签: python python-3.x python-3.5 typing slots