2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用__class__:
def __add__(self, other):
return self.__class__(self.content + other.content)
正如@Eric指出的那樣,您可能想要做類(lèi)似的事情
if self.__class__ == other.__class__:
<use __class__>
else:
<use Number>
以確??深A(yù)測(cè)的行為(如果類(lèi)不匹配,則采取其他措施)。
__radd__ 在這里也值得覆蓋:
__radd__ = __add__
這將使 Number(1) + Float(1) == Float(1) + Number(1) == Float(2)

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
我認(rèn)為您想要{(1, 0): self.__class__, (0, 1): other.__class__}.get((issubclass(self.__class__, other.__class__), issubclass(other.__class__, self.__class__)), Number)
。如果我不必在評(píng)論中加上它,那將不太那么鈍。
添加回答
舉報(bào)