而其他的答案都是正确的,因为它们显示出+通常是这样的(也就是说,保留这个数字,如果它是一个),他们是不完整的,因为他们无法解释发生了什么。
准确地说,+x评估为x.__pos__()和++x到x.__pos__().__pos__().
我可以想象出一个非常奇怪的班级结构(孩子们,不要在家里这么做!)就像这样:class ValueKeeper(object):
def __init__(self, value): self.value = value def __str__(self): return str(self.value)class A(ValueKeeper):
def __pos__(self):
print 'called A.__pos__'
return B(self.value - 3)class B(ValueKeeper):
def __pos__(self):
print 'called B.__pos__'
return A(self.value + 19)x = A(430)print x, type(x)print +x, type(+x)print ++x, type(++x)print +++x, type(+++x)