以下是我的代码段。当我运行该程序时,它给我以下错误。
@functools.total_ordering
AttributeError: 'module' object has no attribute 'total_ordering'
我正在使用python 3.1
import functools
@functools.total_ordering
class Abs(object):
def __init__(self,num):
self.num=abs(num)
def __eq__(self,other):
return self.num==abs(other.num)
def __lt__(self,other):
return self.num < abs(other.num)
five=Abs(-5)
four=Abs(-4)
print(five > four)
import语句中是否缺少某些内容?
答案 0 :(得分:2)
不,你的进口声明没问题。问题是你的Python安装背后是一个版本。在Python 3.2中添加了functools.total_ordering
。来自docs:
3.2版中的新功能。
在版本3.4中更改:从基础版返回
NotImplemented
现在支持无法识别类型的比较功能。
所以,你需要upgarde才能使用它。如果那是不可能的,那么您只需手动定义所有比较运算符。
请注意,此装饰器也向后移植到Python 2.7,但我认为您希望保留Python 3.x。