2011-07-06 52 views
6

我有以下的(例子)代碼:Python __repr__數字?

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__只能返回一個字符串。 有沒有辦法做我想做的事,或者我應該放棄並使用像素()?

回答

9
def __repr__(self): 
    return repr(self.i) 
+0

啊!萬分感謝!我還必須定義\ _ \ _ add \ _ \ _,\ _ \ _ sub \ _ \ _等等,以便我可以使用返回的值(它給我輸入錯誤),但是完美地工作。 –

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