gpt4 book ai didi

python - 如何将 __repr__ 与多个参数一起使用?

转载 作者:行者123 更新时间:2023-12-05 08:13:32 26 4
gpt4 key购买 nike

( python 3.5.2)

我已经为我的一个类定义了 __repr__ 如下:

class d():
def __init__(self):
self._values = []
return
def __pos__(self):
return self._values[0]
def __repr__(self, value):
self._values.append(value)
return

现在我要

x = d()
print(x,"a")
print(+x)

返回

一个

但是我得到了

TypeError:__repr__() 缺少 1 个必需的位置参数:'value'

我已经尝试了一些变体,例如 print(x),"a" 但没有成功。

最佳答案

如果您想控制类实例的显示方式,正确的方法是覆盖 __format__ 方法。通常,您可以覆盖的三个方法用于:

  1. __repr__ - 当对象需要在交互式解释器中显示时使用,通常作为调试辅助。尽可能地,它应该是一个可以在评估时重新创建对象的字符串。
  2. __str__ - 在将对象传递给 str 时使用,或在 print 尝试显示您的对象时调用。没有其他定义,它只是调用 __repr__。这是实例的“默认”字符串表示形式。
  3. __format__ - 当您的对象是 str.format 的参数时使用。它接收格式规范(如果有)作为附加参数,格式规范出现在替换字段中的可选 : 之后。

这是一个表示数字对的类的简单示例。用于分隔数字的字符可以通过格式规范进行配置。

class Pair():
def __init__(self, x, y):
self.x = x
self.y = y

def __format__(self, spec):
return "{}{}{}".format(self.x, spec, self.y)

def __str__(self):
return "{:/}".format(self)

def __repr__(self):
return "Pair({}, {})".format(self.x, self.y)

可以按如下方式使用:

>>> x = Pair(1,2)
>>> x # using __repr__
Pair(1, 2)
>>> str(x) # using __str__, with a default separator of /
'1/2'
>>> print(x) # uses __str__ implicitly
1/2
>>> "{}".format(x) # no separator specified
'12'
>>> "{:-}".format(x) # use - to separate the two numbers
'1-2'

请注意,对于format,规范不一定是返回值的部分,而是作为如何的说明格式化值。

关于python - 如何将 __repr__ 与多个参数一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com