python3.9 dataclasses 限制字段类型
时间: 2023-06-30 17:03:36 浏览: 90
在 Python 3.9 中,您可以使用类型提示和 `dataclasses` 模块中的 `field()` 函数来限制字段类型。下面是一个例子:
```python
from dataclasses import dataclass, field
from typing import List
@dataclass
class Person:
name: str
age: int
hobbies: List[str] = field(default_factory=list)
def add_hobby(self, hobby: str):
self.hobbies.append(hobby)
```
在这个例子中,`Person` 类有三个字段。`name` 和 `age` 字段分别是字符串和整数类型,而 `hobbies` 字段是一个列表类型,其中包含一些字符串元素。
如果您在创建 `Person` 对象时,提供了错误的字段类型,则会引发 `TypeError` 异常。例如:
```python
person = Person(name="Alice", age="25") # TypeError: invalid type for argument 'age' (expected int, got str)
```
另外,如果您在调用 `add_hobby()` 方法时,提供了错误的参数类型,则会引发 `TypeError` 异常。例如:
```python
person = Person(name="Alice", age=25)
person.add_hobby(42) # TypeError: argument 'hobby' must be str, not int
```
通过使用类型提示和 `dataclasses` 模块中的 `field()` 函数,您可以很轻松地限制字段类型,并防止出现类型错误。
阅读全文