我不确定类型提示实例变量的 Python 约定 - 我一直在__init__
构造函数参数中执行它们,如下所示:
class LoggedVar(Generic[T]):
def __init__(self, value: T, name: str, logger: Logger) -> None:
self.name = name
self.logger = logger
self.value = value`
但我也看到了注释实例变量的 PEP 约定(下面的片段),然后还在__init__
参数中进行类型提示:
class BasicStarship:
captain: str = 'Picard' # instance variable with default
damage: int # instance variable without default
stats: ClassVar[Dict[str, int]] = {} # class variable`
def __init__(self, damage: int, captain: str = None):
self.damage = damage
if captain:
self.captain = captain # Else keep the default
最后,稍后在 PEP 526 文章中,他们说为了方便和惯例,可以执行以下操作:
class Box(Generic[T]):
def __init__(self, content):
self.content: T = content
(以上两个代码片段都来自这里。)
那么 - 这些约定之一是否比我应该尝试坚持的其他约定更好/更广泛接受(更好的可读性等)?