-1

所以以复杂的内置类型为例。出于教育目的,我正在制作自己的 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>

我希望我的班级输出同样的东西。我一直认为这是str魔术方法的目的,但只有当某些东西试图将实例转换为字符串时才会调用,这在上面的示例中没有发生。这个怎么做?

4

1 回答 1

3

使用__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)
于 2019-09-09T09:26:25.080 回答