内核在python中的@property之后死亡



我在Jupyter中运行以下代码:

from typing import List
class dummy:
def __init__(self, dum: List =[]):
self.dum = dum
@property
def dum(self) -> List:
return self.dum
@dum.setter
def dum(self, value: List) -> None:
self.dum = value

当我运行以下命令时:

dummy(dum=[1,2,3])

内核在没有告诉我可能的错误的情况下死亡。发生了什么事?

@property
def dum(self) -> List:
return self.dum

创建一个无限递归。

  • 属性本身应该有一个不同的名称。按照约定,它通常是带有下划线前缀的属性名。

  • 当我们使用它时,应该避免使用默认的可变参数。

  • mypy不喜欢隐式Optional注释,所以List = None应该是Optional[List] = None

from typing import List, Optional
class dummy:
def __init__(self, dum: Optional[List] = None):
self.dum = dum if dum is not None else []
@property
def dum(self) -> List:
return self._dum
@dum.setter
def dum(self, value: List) -> None:
self._dum = value

相关内容

最新更新