python - 为什么要打印 s3 的对象地址?
问题描述
class A:
def __init__(self,m1,m2):
self.mrks1= m1
self.mrks2 = m2
def __add__(self,other)
r1 = self.mrks1 +other.mrks1
r2 = self.mrks2 + other.mrks2
s = A(r1,r2)
return s
a1 = A(1,2)
a2 = A(2,3)
s3 = s1+s2
print(s3)
s3 的对象地址被打印而不是添加对象
解决方案
你快到了,我会解释为什么你没有得到预期的输出。
您意识到,当您使用 + 对两个对象求和时,会在内部调用sum方法。
好吧,当你打印一个对象时,是一样的,但使用str方法!
class A:
def __init__(self,m1,m2):
self.mrks1= m1
self.mrks2 = m2
def __add__(self,other):
r1 = self.mrks1 +other.mrks1
r2 = self.mrks2 + other.mrks2
self.mrks1= r1
self.mrks2 = r2
s = A(r1,r2)
return s
def __str__(self):
return "Values are " + str(self.mrks1) + ' ' + str(self.mrks2)
s1 = A(1,2)
s2 = A(2,3)
s3 = s1+s2
print(s3)
如果您在没有 __str __ 方法的情况下打印对象,那么打印是对象的默认方法!因此打印对象的地址,您需要通过声明 __ str __ 来覆盖它