装饰师和其他人为什么要用这些,它们是如何工作的?

2024-05-08 22:08:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我陷入了理解装饰师的难题。与下面的代码相比,__lt__(self, number)方法和less_than(self, 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

Tags: 方法代码ltselfnumber参数returndef
2条回答

正如Martijn Pieters所说,这与装饰师无关。你知道吗

s1 = Sort(1)
s2 = Sort(2)

if s1 < s2:
    print 'Yes'

if s1.less_than(2):
    print 'Yes'

看到区别了吗? 在第一种情况下,如果您与Sort类型的对象进行比较。 在第二种情况下,如果从Sort类型的实例s1调用方法。你知道吗

这两个函数__lt__()less_than()做同样的事情。然而,有一个很大的区别: 使用“<;”运算符时,python会在内部调用函数__lt__。所以,你可以这样做

x = Sort(5)
y = Sort(10)
print(x < y)

比较x < y调用x.__lt__(y),因此它返回true。通过这种方式,可以更改所创建的特定类的内置运算符的行为。有关详细信息,请参阅“操作符重载”和“python魔术方法”

相关问题 更多 >