[英]kernel dies after @property in python
我在 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])
kernel 没有告诉我很多可能的错误就死了。 到底是怎么回事?
@property
def dum(self) -> List:
return self.dum
这创建了一个无限递归。
属性本身应该有一个不同的名称。 按照惯例,它通常是带有下划线前缀的属性名称。
当我们这样做时, 应该避免使用默认的可变 arguments 。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.