我不确定Python对类型暗示实例变量的约定——我一直在__init__
构造函数参数like seen here中使用它们:
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
(以上两段代码都来自here.)
那么,这些约定中有一个比我应该坚持的其他约定(更好的可读性等)更好/更被广泛接受吗?