gen*_*gen 3 python oop class operator-overloading
假设我有一个班级:
class Cat:
def __init__(self, name = "default", age = 0):
self.name = name
self.age = age
Run Code Online (Sandbox Code Playgroud)
我还有一个猫列表:
l = [Cat('Joe')]
Run Code Online (Sandbox Code Playgroud)
现在我不能打电话给以下人员:
if 'Joe' in l: # the right syntax would be if Cat('Joe') in list
Run Code Online (Sandbox Code Playgroud)
我需要哪个运算符重载才能将identify类Cat对象的by成员变量name?
您必须定义__eq__方法,如下所示:
class Cat:
def __init__(self, name = "default", age = 0):
self.name = name
self.age = age
def __eq__(self, other):
if isinstance(other, str):
return self.name == other
elif isinstance(other, Cat):
return self.name == other.name
Run Code Online (Sandbox Code Playgroud)
这样当你运行支票时:
l = [Cat('Joe')]
'Joe' in l
#True
Run Code Online (Sandbox Code Playgroud)