将属性设置为数据类中的多种类型 - Python 3.9.x

Jer*_* M. 2 python oop object

我正在使用dataclass装饰器。

对于我的一个变量,我希望它是 astrint类型

from dataclasses import dataclass

@dataclass
class Foo:
    test_var: str
    # test_var: int

    def get_example(self):
        return type(self.test_var)
Run Code Online (Sandbox Code Playgroud)

当对象被构造时,我希望 fortest_var是 astr或 an ;如何为我的类的属性指定两种类型?intFoo

Rig*_*leg 6

您正在寻找Union

联合型;Union[X, Y]表示 X 或 Y。

from typing import Union
from dataclasses import dataclass

@dataclass
class Foo:
    test_var: Union[str, int]

    def get_example(self):
        return type(self.test_var)
Run Code Online (Sandbox Code Playgroud)

请注意,在 Python 3.10 中,您可以使用X | Y相当于Union[X, Y](参见文档)的语法。