对于Transcrypt Python to JavaScript compiler的版本3.7.1,我目前正在使用新的@dataclass装饰器。我曾希望像the PEP's abstract一样支持==, !=, <, >, >=, <=,但事实并非如此:

from dataclasses import dataclass

@dataclass
class C:
    x: int = 10

一些比较不起作用:
>>> c1 = C(1)
>>> c2 = C(2)
>>> c1 == c2  # ok
False
>>> c1 < c2  # crash
TypeError: '<' not supported between instances of 'C' and 'C'

为什么不支持除==!=之外的比较运算符?还是我忽略了什么?

最佳答案

他们这样做,只是默认情况下不行。每PEP-557:



因此,您需要@dataclass(order=True)

09-27 18:04