5
是否有任何方法可以將__str__
,__eq__
,__repr__
的簡單實現添加到類中?python中的默認方法實現(__ str __,__ eq __,__ repr __等)
基本上我想要一個__eq__
是隻是所有非前綴實例變量是否相等。
和__str__
/__repr__
只是命名每個變量並調用每個變量的str/repr。
標準庫中是否存在這種機制?
是否有任何方法可以將__str__
,__eq__
,__repr__
的簡單實現添加到類中?python中的默認方法實現(__ str __,__ eq __,__ repr __等)
基本上我想要一個__eq__
是隻是所有非前綴實例變量是否相等。
和__str__
/__repr__
只是命名每個變量並調用每個變量的str/repr。
標準庫中是否存在這種機制?
你可以定義一個Default
混入:
class Default(object):
def __repr__(self):
return '-'.join(
str(getattr(self,key)) for key in self.__dict__ if not key.startswith('_'))
def __eq__(self,other):
try:
return all(getattr(self,key)==getattr(other,key)
for key in self.__dict__ if not key.startswith('_'))
except AttributeError:
return False
class Foo(Default):
def __init__(self):
self.bar=1
self.baz='hi'
foo=Foo()
print(foo)
# hi-1
foo2=Foo()
print(foo==foo2)
# True
foo2.bar=100
print(foo==foo2)
# False