Python 数字的 __repr__?

7 投票
4 回答
3641 浏览
提问于 2025-04-16 20:59

我有以下这段(示例)代码:

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 个回答

5

但是 __repr__ 只能返回一个字符串。

所以只需要这样做:

def __repr__(self): 
    return str(self.i) # or repr(self.i)

或者,为了模仿常见的Python格式:

def __repr__(self): 
    return '_1DCoord(%i)' % self.i
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
12
def __repr__(self): 
  return repr(self.i)

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答