python __lt__与__gt__ 使用初体验,是出bug了吗?

1. 代码

class LargerNumKey1(str):
    # https://blog.csdn.net/LaoYuanPython/article/details/95042104
    def __lt__(x, y):
        return x + y > y + x

class Solution1:
    def largestNumber(self, nums):
        print("input:nums:",nums)
        largest_num = ''.join(sorted(map(str, nums), key=LargerNumKey1))
        print("largest_num:", largest_num)
        return '0' if largest_num[0] == '0' else largest_num

nums = [2343,2343,345,6546,654]
s = Solution1()
print(s.largestNumber(nums))

print("="*10)

class LargerNumKey2(str):
    # https://blog.csdn.net/LaoYuanPython/article/details/95042104
    def __lt__(x, y):
        return x + y < y + x

class Solution2:
    def largestNumber(self, nums):
        print("input:nums:",nums)
        largest_num = ''.join(sorted(map(str, nums), key=LargerNumKey2))
        print("largest_num:", largest_num)
        return '0' if largest_num[0] == '0' else largest_num

nums = [2343,2343,345,6546,654]
s = Solution2()
print(s.largestNumber(nums))


print("="*10)

class LargerNumKey3(str):
    # https://blog.csdn.net/LaoYuanPython/article/details/95042104
    def __gt__(x, y):
        return x + y < y + x

class Solution3:
    def largestNumber(self, nums):
        print("input:nums:",nums)
        largest_num = ''.join(sorted(map(str, nums), key=LargerNumKey3))
        print("largest_num:", largest_num)
        return '0' if largest_num[0] == '0' else largest_num

nums = [2343,2343,345,6546,654]
s = Solution3()
print(s.largestNumber(nums))


print("="*10)

class LargerNumKey4(str):
    # https://blog.csdn.net/LaoYuanPython/article/details/95042104
    def __gt__(x, y):
        return x + y > y + x

class Solution4:
    def largestNumber(self, nums):
        print("input:nums:",nums)
        largest_num = ''.join(sorted(map(str, nums), key=LargerNumKey4))
        print("largest_num:", largest_num)
        return '0' if largest_num[0] == '0' else largest_num

nums = [2343,2343,345,6546,654]
s = Solution4()
print(s.largestNumber(nums))

print("="*10)

print("后面几种为啥都不变了啊")

2. 输出


input:nums: [2343, 2343, 345, 6546, 654]
largest_num: 654665434523432343
654665434523432343
==========
input:nums: [2343, 2343, 345, 6546, 654]
largest_num: 234323433456546546
234323433456546546
==========
input:nums: [2343, 2343, 345, 6546, 654]
largest_num: 234323433456546546
234323433456546546
==========
input:nums: [2343, 2343, 345, 6546, 654]
largest_num: 234323433456546546
234323433456546546
==========
后面几种为啥都不变了啊

Process finished with exit code 0


Python中的`__lt__`方法是一个富比较方法,用于定义对象的小于(less than)操作。富比较方法是一组特殊的方法,用于定义对象之间的比较操作,包括小于、大于、等于等。`__lt__`方法在对象之间进行小于操作时被调用。 通过实现`__lt__`方法,我们可以自定义对象之间的小于比较操作的行为。当使用小于运算符`&lt;`对两个对象进行比较时,如果其中一个对象的`__lt__`方法被实现,Python会调用该方法来执行比较操作。 详细的`__lt__`方法的说明可以在Python官方文档中找到,链接如下:。 例如,我们可以定义一个自定义的类`Person`,并在其中实现`__lt__`方法来定义按照年龄大小进行比较的方式: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def __lt__(self, other): return self.age &lt; other.age person1 = Person("Alice", 25) person2 = Person("Bob", 30) print(person1 &lt; person2) # 输 True,因为 person1 的年龄小于 person2 ``` 在上面的例子中,我们定义了一个`Person`类,并实现了`__lt__`方法来比较两个`Person`对象之间的年龄大小。根据`__lt__`方法的实现,我们可以使用小于运算符`&lt;`来比较两个`Person`对象的年龄大小。 注意,除了`__lt__`方法,还有其他富比较方法如`__gt__`、`__eq__`等,分别用于定义大于(greater than)和等于(equal to)操作。 请注意,上述代码仅作为示例,实际的`__lt__`方法的实现可能会根据具体的需求有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值