Python 装饰师和其他人-为什么要使用这些以及它们是如何工作的?
我陷入了一个理解装饰师的问题。与下面的代码相比,_lt__self,number方法与less_thanself,number方法相比有什么用处? 这两种方法之间有什么区别吗?它们如何处理参数Python 装饰师和其他人-为什么要使用这些以及它们是如何工作的?,python,Python,我陷入了一个理解装饰师的问题。与下面的代码相比,_lt__self,number方法与less_thanself,number方法相比有什么用处? 这两种方法之间有什么区别吗?它们如何处理参数 class Sort: def __init__(self, number): self.number = number def __lt__(self, number): return self.number < number def
class Sort:
def __init__(self, number):
self.number = number
def __lt__(self, number):
return self.number < number
def less_than(self, number):
return self.number < number
正如Martijn Pieters所说,这与装饰师无关
s1 = Sort(1)
s2 = Sort(2)
if s1 < s2:
print 'Yes'
if s1.less_than(2):
print 'Yes'
看到区别了吗?
在第一种情况下,如果与Sort类型的对象进行比较。
在第二种情况下,如果您从Sort类型的实例s1调用一个方法。这两个函数,\uu lt\uu和less\u than执行相同的操作。但是,有一个很大的区别:
当你使用的时候,这与装饰者无关__lt_;是Python在比较两个可能重复的对象时将调用的特殊方法,这与装饰器无关,装饰器是完全不同的。不过,问题的其余部分是相当正确的。
x = Sort(5)
y = Sort(10)
print(x < y)