• Python的富比较方法__le__、__ge__之间的关联关系分析


    Python的富比较方法包括__le__、__ge__分别表示:小于等于、大于等于,对应的操作运算符为:“<=”、“>=”。那么是否象普通数字运算一样,这两个方法之间存在互反的关系呢?
    Python没有对__le__、__ge__这两个方法之间有什么强制关系,但建议__le__和__ge__为互反,开发者完全可以根据业务逻辑的需要自己定义。我们来进行分析验证:

    1. 当自定义类中两个方法都定义了时,“<=”、“>=”分别调用__le__和__ge__方法;
    2. 当自定义类中定义了__le__方法,未定义__ge__方法时,进行”>=”比较也是调用__le__方法,只是对调用值求反。案例:
    >>> class Car():
       def __init__(self,carname,oilcp100km, price):
           self.carname,self.oilcp100km,self.price = carname,oilcp100km, price
       
       def __le__(self,other):
           print("execute __le__")
           return self.price<=other.price
     >>> 
    >>> car1,car2,car3,car4 = Car('爱丽舍',8,10),Car('凯美瑞',7,27),Car('爱丽舍',8,10),Car('途观',12,27)
    >>> 
    >>> car1>=car2
    execute __le__
    False
    >>> car1<=car2
    execute __le__
    True
    >>>
    
    1. 当自定义类中定义了__ge__方法,未定义__le__方法时,进行”<=”比较也是调用__ge__方法,只是对调用值求反。案例:
    >>> class Car():
       def __init__(self,carname,oilcp100km, price):
           self.carname,self.oilcp100km,self.price = carname,oilcp100km, price
       
         def __ge__(self,other):
           print("execute __ge__")
           return self.price>=other.price
    
    >>> car1,car2,car3,car4 = Car('爱丽舍',8,10),Car('凯美瑞',7,27),Car('爱丽舍',8,10),Car('途观',12,27)
    >>> car1<=car2
    execute __ge__
    True
    >>> car1>=car2
    execute __ge__
    False
    >>>
    

    通过以上案例,我们知道当__le__、__ge__方法都定义了时,“<=”、“>=”分别调用__le__和__ge__方法,当一个定义另一个未定义时,未定义的操作执行时会调用已经定义的方法求反。这个与__eq__和__ne__的关系还是有较大的不同,与__lt__和__gt__的关系一样。

    老猿Python,跟老猿学Python!
    博客地址:https://blog.csdn.net/LaoYuanPython

    请大家多多支持,点赞、评论和加关注!谢谢!

  • 相关阅读:
    尚硅谷vue 10 2 单文件组件
    尚硅谷vue 4 动态绑定class样式
    mysql注意事项 持续补充
    mysql实现分组排序
    python数据分析包 pandas dataframe
    mysql性能调优
    尚硅谷vue 5 条件渲染
    尚硅谷vue 9 生命周期
    尚硅谷vue 8 内置指令 v
    flutter MAC 真机调试
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/11166828.html
Copyright © 2020-2023  润新知