Python中的__repr__用于数字吗?

7
我有以下(示例)代码:

class _1DCoord():
    def __init__(self, i):
        self.i = i

    def pixels(self):
        return self.i

    def tiles(self):
        return self.i/TILE_WIDTH

我想要做的是这样的:

>>> xcoord = _1DCoord(42)
>>> print xcoord 
42 

但我看到的是这个:
>>> xcoord = _1DCoord(42)
>>> print xcoord
<_1DCoord instance at 0x1e78b00>

我尝试使用以下代码作为 __repr__:

def __repr__(self): 
    return self.i

但是__repr__只能返回一个字符串。有没有办法实现我想要的功能,还是我应该放弃并使用pixels()?
4个回答

12
def __repr__(self): 
  return repr(self.i)

啊!太感谢了!我还得定义__add__,__sub__等等,这样我才能处理返回值(它一直给我类型错误),但现在完美解决了。 - Dane Larsen

6
我相信这就是您要找的内容:

我相信这就是您要找的内容:

class _1DCoord():
    def __init__(self, i):
        self.i = i

    def __repr__(self):
        return '_1DCoord(%i)' % self.i

    def __str__(self):
        return str(self.i)

>>> xcoord = _1DCoord(42)
>>> xcoord
_1DCoord(42)
>>> print xcoord
42

5
但是__repr__只能返回一个字符串。因此,只需执行以下操作:
def __repr__(self): 
    return str(self.i) # or repr(self.i)

或者,为了模仿通常的Python格式:
def __repr__(self): 
    return '_1DCoord(%i)' % self.i

1
repr 方法允许您定义类实例的字符串表示形式。它必须只接受 self 作为参数并返回一个字符串。理想情况下,repr 方法应该返回构建实例副本所需的信息。要使用 repr 方法,请执行以下操作:

def __repr__(self):

return f"{self.instance}"

这允许您返回属性的字符串表示形式,因为 repr 是 Python 类中的内置方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接