繁体   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