在使用 @dataclass(order=True)
中,会比较数据类中定义的所有属性。具体来说,生成的比较运算符方法会按照数据类中定义属性的顺序逐个比较属性的取值。
下面是一个示例代码,演示了 order=True
比较数据类中所有属性的情况:
from dataclasses import dataclass
@dataclass(order=True)
class Person:
name: str
age: int
p1 = Person("Alice", 25)
p2 = Person("Bob", 30)
print(p1 < p2) # 输出:True
print(p1 == p2) # 输出:False
print(p1 <= p2) # 输出:True
p_list = [p1, p2]
p_list.sort() # 对象排序
当你将 order=True
参数传递给 @dataclass
装饰器时,Python 会自动生成以下比较运算符方法:__eq__()
、__ne__()
、__lt__()
、__le__()
、__gt__()
和 __ge__()
。这些方法会依次比较数据类中定义的每个属性的取值。
例如,如果我们定义了一个包含 name
和 age
两个属性的数据类 Person
,并且将 order=True
应用于该类,那么生成的比较运算符方法将会依次比较 name
和 age
两个属性的取值。