这不是它抱怨的属性;这是参数名。标准惯例是附加一个
_
以避免阴影。
def __init__(self, name: Optional[str], id_: Optional[int]) -> None:
self.id = id_ if id_ else self.__class__.counter
self.name = name if name else f"{self.__class__.__name__}-{self.id}"
self.__class__.counter += 1
我发现修改参数的值比使用条件表达式要简单一些。
def __init__(self, name: Optional[str], id_: Optional[int]) -> None:
if id_ is None:
id_ = self.__class__.counter
if name_ is None:
name = f"{self.__class__.__name__}-{id_}"
self.id = id_
self.name = name
self.__class__.counter += 1