[英]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.