2013-12-09 159 views
0

我正在設計Python的面向對象功能。到目前爲止,我只使用NumPy和SciPy,而不是純Python本身。我寫的代碼,這個小片段:Python ::初始化一個對象

class Point(object): 

    def __init__(self, x = 0.0, y = 0.0): 
     self.x = x 
     self.y = y 

    def __str__(self): 
     return '%.2d , %.2d' % (self.x, self.y) 

    def print_point(self): 
     print('%.1d , %1.d' % (self.x,self.y)) 

a = Point() 
b = Point(1.2,4.5) 

print(a) 
print(b) 

現在輸出的是:

00 , 00 
01 , 04 

這似乎是一個典型的格式錯誤給我,因爲輸出確實應該(0.0,0.0)和(1.2,4.5)。

我在做什麼錯?

+4

我相信你需要使用' 「%.2f」',而不是' 「%.2d」' – slallum

+0

你想括號?因爲如果你想要括號,你需要把它們放進去。Python不能告訴你想要在你的字符串周圍使用括號。 – user2357112

回答

2

您需要將其從"%.2d"更改爲"%.2f"。雖然我建議你使用格式而不是舊式的格式。

class Point(object): 
    def __init__(self, x=0.0, y=0.0): 
     self.x = x 
     self.y = y 

    def __str__(self): 
     return '{0:.2f}, {1:.2f}'.format(self.x, self.y) 

    def print_point(self): 
     print('%.1d , %1.d' % (self.x, self.y)) 


a = Point() 
b = Point(1.2, 4.5) 

print(a) 
print(b) 

爲您提供:

0.00, 0.00 
1.20, 4.50 
3

只是改變你的STR到:
def __str__(self): return '%.2f , %.2f' % (self.x, self.y)
記住:%d打印整數,%F打印浮點值。

2

%d格式化爲整數。你想要%f - 看到這裏docs.python.org

但這是舊式。

def __str__(self): 
    return "{:.2f} , {:.2f}".format(self.x,self,y) 

將是現代的方法。