对于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)
。