在 python 解释器中执行单个变量时,什么决定了输出?
What determines output when executing single variable in python interpreter?
所以以复杂的内置类型为例。我正在制作我自己的 Complex 版本用于教育目的,但是截至目前,它们的行为方式不同。
当我运行
>>> 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>
我希望我的 class 输出同样的东西。我一直认为这是 str 魔法方法的目的,但只有当某些东西试图将实例转换为字符串时才会调用它,而这在上面的示例中并没有发生。如何做到这一点?
使用__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)
所以以复杂的内置类型为例。我正在制作我自己的 Complex 版本用于教育目的,但是截至目前,它们的行为方式不同。 当我运行
>>> 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>
我希望我的 class 输出同样的东西。我一直认为这是 str 魔法方法的目的,但只有当某些东西试图将实例转换为字符串时才会调用它,而这在上面的示例中并没有发生。如何做到这一点?
使用__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)