[英]How to determine that classes do not equal each other
我不确定如何确定从其他类继承的类不相等。
我曾尝试使用 isinstance 来执行此操作,但我不太精通这种方法。
class FarmAnimal:
def __init__(self, age):
self.age = age
def __str__(self):
return "{} ({})".format(self, self.age)
from src.farm_animal import FarmAnimal
class WingedAnimal(FarmAnimal):
def __init__(self, age):
FarmAnimal.__init__(self, age)
def make_sound(self):
return "flap, flap"
from src.winged_animal import WingedAnimal
class Chicken(WingedAnimal):
def __init__(self, age):
WingedAnimal.__init__(self, age)
def __eq__(self, other):
if self.age == other.age:
return True
else:
return False
def make_sound(self):
return WingedAnimal.make_sound(self) + " - cluck, cluck"
from src.chicken import Chicken
from src.winged_animal import WingedAnimal
class Duck(WingedAnimal):
def __init__(self, age):
WingedAnimal.__init__(self, age)
def make_sound(self):
return WingedAnimal.make_sound(self) + " - quack, quack"
def __eq__(self, other):
if not isinstance(other, Duck):
return NotImplemented
return self.age == other.age
if __name__ == "__main__":
print(Chicken(2.1) == Duck(2.1))
所以在 main 方法中它说 print(Chicken(2.1) == Duck(2.1)) 并且它打印 True,但是因为它们是不同的类,我希望它返回 False。 任何帮助将不胜感激。
您可以在FarmAnimal
中定义__eq__
方法,检查self
的 class 是否与other
的 class 相同:
def __eq__(self, other):
if self.age == other.age and self.__class__ == other.__class__
return True
else:
return False
而且您不必在子类中编写特定的__eq__
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.