2011-07-06 25 views
6

tôi có như sau (ví dụ) mã:Python __repr__ cho số?

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

    def pixels(self): 
     return self.i 

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

Những gì tôi muốn làm điều này là:

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

Nhưng thay vào đó tôi thấy điều này:

>>> xcoord = _1DCoord(42) 
>>> print xcoord 
<_1DCoord instance at 0x1e78b00> 

tôi đã cố gắng sử dụng __repr__ như sau:

def __repr__(self): 
    return self.i 

Nhưng __repr__ chỉ có thể trả về một chuỗi. Có cách nào để làm những gì tôi đang cố gắng làm hay tôi chỉ cần bỏ và sử dụng pixel()?

Trả lời

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

Ah ! Cảm ơn một tấn! Tôi cũng đã phải xác định \ _ \ _ thêm \ _ \ _, \ _ \ _ sub \ _ \ _ vv để tôi có thể làm việc với giá trị trả về (nó đã cho tôi lỗi loại), nhưng nó hoạt động hoàn hảo. –

5

Nhưng __repr__ chỉ có thể trả về một chuỗi.

Vì vậy, chỉ làm

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

Hoặc, để bắt chước các định dạng Python thông thường:

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

Tôi tin rằng đây là những gì bạn đang tìm kiếm:

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 
Các vấn đề liên quan