Python __repr__用于数字?

Dan*_*sen 7 python

我有以下(示例)代码:

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

    def pixels(self):
        return self.i

    def tiles(self):
        return self.i/TILE_WIDTH
Run Code Online (Sandbox Code Playgroud)

我想要做的是:

>>> xcoord = _1DCoord(42)
>>> print xcoord 
42 
Run Code Online (Sandbox Code Playgroud)

但相反,我看到了这个:

>>> xcoord = _1DCoord(42)
>>> print xcoord
<_1DCoord instance at 0x1e78b00>
Run Code Online (Sandbox Code Playgroud)

我尝试使用__repr__如下:

def __repr__(self): 
    return self.i
Run Code Online (Sandbox Code Playgroud)

但是__repr__只能返回一个字符串.有没有办法做我想做的事情,或者我应该放弃并使用像素()?

Ign*_*ams 11

def __repr__(self): 
  return repr(self.i)
Run Code Online (Sandbox Code Playgroud)


iro*_*hon 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
Run Code Online (Sandbox Code Playgroud)


JAB*_*JAB 5

__repr__只能返回一个字符串.

所以就这么做

def __repr__(self): 
    return str(self.i) # or repr(self.i)
Run Code Online (Sandbox Code Playgroud)

或者,模仿通常的Python格式:

def __repr__(self): 
    return '_1DCoord(%i)' % self.i
Run Code Online (Sandbox Code Playgroud)