代码之家  ›  专栏  ›  技术社区  ›  atm

用is运算符[重复]将python类与none进行比较

  •  0
  • atm  · 技术社区  · 5 年前

    这个问题已经有了答案:

    有没有一种方法可以使用 is 操作员?

    class DefaultValue:
        def __init__(self, default, value=None):
            self.default = default
            self.value = value
    
        def __str__(self):
            return str(self.value or self.default)
    
        def __eq__(self, other):
            return self.value == other
    
        def __hash__(self):
            return hash(self.value)
    
    d = DefaultValue(False)
    
    str(d) # 'False' 
    
    d == None # True 
    
    d is None # False
    

    我是否可以在课堂上实现 操作员将返回 当与比较时 没有 ?

    2 回复  |  直到 5 年前
        1
  •  1
  •   Picachieu    5 年前

    你不能超载 is 运算符,因为它用于检查两个变量是否引用相同的值,而不需要重载该值。最相似的是超载 == __eq__ 方法:

    class MyClass:
        def __eq__(self, other):
            #code here
    
        2
  •  2
  •   Andrew Ray    5 年前

    https://docs.python.org/3/library/operator.html

    按照您定义的其他运算符重写方法的类似语法,您可以为is_uuu执行一项操作。希望这有帮助!