簡體   English   中英

kernel 在 python 中的@property 之后死亡

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM