3

我一直在阅读 PEP484 和 526,但仍然无法弄清楚在没有初始值的情况下对变量进行类型注释的更好方法是什么。

假设您有一个类,并且__init__您想在其中声明一个变量,但不提供初始值,以便稍后在代码中进行赋值。通常我通常会做的是:

from typing import Optional, List

class SomeClass:

    def __init__(self) -> None:
        self.some_value: Optional[int] = None
        self.other_var: Optional[List] = None

    def _some_method(self) -> None:
        self.some_value = 42

这行得通,但我觉得使用 Optional 会变得__init__过于忙碌且难以阅读。相反,我能做的是:

from typing import List

class SomeClass:

    def __init__(self) -> None:
        self.some_value: int
        self.other_var: List

    def _some_method(self) -> None:
        self.some_value = 42

显然,这会使变量未初始化,但只要它们在被引用之前被正确分配,一切都会正常工作,并且如果我在__init__.

使用第二种方法时,未初始化变量是否会出现任何具体问题?

4

0 回答 0