dataclasses 中限制字段类型
时间: 2023-06-30 21:03:36 浏览: 51
可以使用类型注解来限制 dataclasses 中的字段类型。例如,如果要限制一个字段的类型为 str,可以这样写:
```python
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
```
在这个例子中,name 字段的类型被限制为 str,age 字段的类型被限制为 int。如果在创建 Person 类的实例时,传入的参数类型不匹配,将会抛出类型错误。
```python
>>> p = Person('Alice', '20')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() takes 2 positional arguments but 3 were given
```
```python
>>> p = Person('Alice', 20)
>>> p
Person(name='Alice', age=20)
```
除了基本类型,还可以使用自定义类型作为字段的类型。例如,如果有一个自定义的 Email 类型,可以这样写:
```python
from dataclasses import dataclass
class Email:
def __init__(self, address: str):
self.address = address
@dataclass
class Person:
name: str
email: Email
```
在这个例子中,email 字段的类型被限制为 Email 类型,而 Email 类型需要一个字符串类型的地址参数。