在 python 解释器中执行单个变量时,什么决定了输出?



所以以复杂的内置类型为例。出于教育目的,我正在制作自己的复杂版本,但是到目前为止,它们的行为方式并不相同。 当我跑步时

>>> a = (2+3j)
>>> a
(2+3j)
>>> from complex import Complex # My version of the type
>>> b = Complex(2, 3)
>>> b
<complex.Complex object at 0x10caeb0f0>

我希望我的类输出同样的东西。我一直认为这是strmagic 方法的目的,但只有在尝试将实例转换为字符串时才会被调用,这在上面的示例中没有发生。怎么做?

使用__repr__

class Complex:
def __init__(self, i, j):
self.i = i
self.j = j
def __repr__(self):
return f'({self.i}, {self.j}j)'
b = Complex(2, 3)
print(b)

输出:

(2, 3j)

最新更新