初始化Python数据类对象而不传递实例变量或默认值

Cod*_*uyy 6 python python-3.x python-dataclasses

我想初始化 python 数据类对象,即使没有实例变量传递给它并且我们没有向参数添加默认值

@dataclass
class TestClass:
   
   paramA: str
   paramB: float
   paramC: str

obj1 = TestClass(paramA="something", paramB=12.3)

Run Code Online (Sandbox Code Playgroud)

这里它不允许我创建对象并且它会抛出

TypeError: __init__() missing 1 required positional argument: 'paramC'
Run Code Online (Sandbox Code Playgroud)

我可以使用默认值来解决此错误。

paramC: str = None
# OR
paramC: str = ""
Run Code Online (Sandbox Code Playgroud)

但我不想使用 paramC 的默认值,因为我想要一个场景,如果我们传递 paramC 那么只有它应该存在于对象中,否则它不应该存在。因此,如果我们在这里使用默认值,paramC 将始终存在于对象中,其值为None或空字符串。

如果在初始化期间未传递参数,我想跳过参数的初始化。

小智 -2

您可以使用可选类型。

from typing import Optional

@dataclass
class TestClass:
   
   paramA: str
   paramB: float
   paramC: Optional[str] = None

obj1 = TestClass(paramA="something", paramB=12.3)
Run Code Online (Sandbox Code Playgroud)