美文网首页
python operator模块

python operator模块

作者: 转身丶即天涯 | 来源:发表于2020-08-24 15:24 被阅读0次

    前言

    在python2中,有一个cmp函数用于对比两个对象,但是在python3中已经被舍弃,其功能集成到了operator模块。

    例子

    官方文档:https://docs.python.org/zh-cn/3.7/library/operator.html

    import operator
    
    # 1. int, equal
    res = operator.eq(2, 2)
    
    # 2. int, lt(小于)
    res = operator.lt(1, 2)
    
    # 3. int, le(小于等于)
    res = operator.le(2, 2)
    
    # 4. custom obj
    class MyObj(object):
        def __init__(self, a):
            self.a = a
    
    
    a1, a2 = MyObj(1), MyObj(1)
    res = operator.eq(a1, a2)
    print(id(a1), id(a2))       # 输出id不同
    print(res)      # False
    
    
    # 5. singleton obj
    class Singleton(object):
        def __new__(cls, *args, **kwargs):
            if not hasattr(cls, "_instance"):
                cls._instance = super().__new__(Singleton)
    
            return cls._instance
    
    
    s1, s2 = Singleton(), Singleton()
    res = operator.eq(s1, s2)
    print(id(s1), id(s2))       # 输出id相同,是同一对象
    print(res)      # True
    

    这里主要对自定义类进行测试,自定义类分为两种,一种是单例模式类产出的对象,另一种是非单例模式产出的对象。
    单例对象,operator.eq永远返回True,因为eq是根据id来判断是否为同一对象的。
    同理,非单例对象,operator.eq永远返回False。

    相关文章

      网友评论

          本文标题:python operator模块

          本文链接:https://www.haomeiwen.com/subject/otsnjktx.html