我有以下示例代碼,但是,從__add__
輸出犯規看起來一樣的__str__
輸出。我需要所有輸出看起來完全像__str__
輸出格式。的Python __str__和__add__輸出
class Foo:
def __init__(self,x,y=0):
self.x = x
self.y = y
def __str__(self):
return str(str(self.x/self.y) + "%")
def __add__(self,other):
if self.y > 50:
return str((self.x + other.x)/(self.y+other.y)) + "%"
else:
return str((self.x + other.x)/(self.y+other.y)) + "%"
__str__
輸出看起來就像這樣:
>>> a = Foo(1,3)
>>> print(a)
>>> 0.33333%
__add__
輸出:
>>> Foo(1,3) + Foo(0,0)
>>> '0.33333%'
爲什麼當我用__add__
或__sub__
是否有單引號,而不是當我使用__str__
?
不同的是,首先你'print'的結果,第二次你REPL只是顯示的結果。 – Hyperboreus
當你打印一個字符串時,它不打印引號。 – roippi
如果'__add__'返回了'Foo'的實例,這不是明智嗎?這樣你可以做'Foo(1,2)+ Foo(3,4)+ Foo(5,6)'。 – Hyperboreus