使用is运算符将Python类与None比较

时间:2019-01-04 21:00:06

标签: python oop singleton comparison nonetype

是否可以使用is运算符将Python类与“无”进行比较?

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

我是否可以在该类上实现某些内容,以便与相比,运算符将返回 True

2 个答案:

答案 0 :(得分:2)

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

按照其他运算符的类似语法,您将覆盖已定义的方法,可以为is_做一个。希望这会有所帮助!

答案 1 :(得分:1)

您不能重载is运算符,因为它用于检查两个变量是否引用相同的值,您永远不需要重载。最相似的事情是使用==方法重载__eq__

class MyClass:
    def __eq__(self, other):
        #code here