4 什么是数据类,它们与普通类有何不同? 使用PEP 557,数据类被引入到python标准库中。 它们使用@dataclass装饰器,并且应该是“默认情况下的可变命名元组”,但是我不确定我是否真正理解这是什么意思,以及它们与普通类的区别。 python数据类到底是什么,什么时候最好使用它们? 141 python class python-3.7 python-dataclasses
2 在namedtuple中输入提示 考虑以下代码: from collections import namedtuple point = namedtuple("Point", ("x:int", "y:int")) 上面的代码只是演示我正在尝试实现的方法。我想namedtuple使用类型提示。 您知道如何以一种优雅的方式达到预期效果吗? 127 python python-3.x type-hinting namedtuple python-dataclasses
8 Python 3.7数据类中的类继承 我目前正在尝试Python 3.7中引入的新数据类构造。我目前坚持尝试做一些父类的继承。看来参数的顺序已被我当前的方法所破坏,使得子类中的bool参数在其他参数之前传递。这导致类型错误。 from dataclasses import dataclass @dataclass class Parent: name: str age: int ugly: bool = False def print_name(self): print(self.name) def print_age(self): print(self.age) def print_id(self): print(f'The Name is {self.name} and {self.name} is {self.age} year old') @dataclass class Child(Parent): school: str ugly: bool = True jack = Parent('jack snr', 32, ugly=True) … 84 python python-3.x python-3.7 python-dataclasses
10 嵌套字典中的Python数据类 3.7中的标准库可以将数据类递归转换为dict(来自文档的示例): from dataclasses import dataclass, asdict from typing import List @dataclass class Point: x: int y: int @dataclass class C: mylist: List[Point] p = Point(10, 20) assert asdict(p) == {'x': 10, 'y': 20} c = C([Point(0, 0), Point(10, 4)]) tmp = {'mylist': [{'x': 0, 'y': 0}, {'x': 10, 'y': 4}]} … 72 python python-3.x python-dataclasses