Python 装饰师和其他人-为什么要使用这些以及它们是如何工作的?

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

我陷入了一个理解装饰师的问题。与下面的代码相比,_lt__self,number方法与less_thanself,number方法相比有什么用处? 这两种方法之间有什么区别吗?它们如何处理参数

 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)