2013-02-07 40 views
0

編輯:我的錯誤 - 另一個方法名稱(與下劃線)在另一個地方只有一個通過它的身體。愚蠢的我。請關閉。方法名稱中的下劃線[愚蠢的錯誤]

我有一個類有兩個方法,每個返回一個簡單的字符串。這兩種方法之間唯一的定性區別在於其名稱中有一個下劃線,而另一個沒有。但是,帶下劃線的那個在調用時不返回字符串。在方法名稱中使用下劃線似乎遵循PEP 8 guidelines regarding method names

我一直在閱讀Python tutorial on classes,但它沒有提到任何行爲上的差異,這取決於在方法名稱中使用下劃線。如果我刪除下劃線,字符串將被返回。

這是什麼造成的?

這裏是我的代碼:

class Board: 
    def f(self): 
     return 'Hello' 
    def print_board(self): 
     return 'Hello' 

我使用Python 3.2.3。

+1

你能發佈一個完整的程序來證明這一點嗎? – ecatmur

+0

我無法用此代碼複製它。調用這兩種方法的預期效果。 –

+0

對不起 - 發現我有另一個同名的方法,但沒有任何代碼執行。對這個愚蠢的問題抱歉。 – 5th

回答

0

它工作正常,我與Python 3.2.1和3.3.0:

class Board: 
    def f(self): 
     return 'Hello' 
    def print_board(self): 
     return 'Hello' 


b = Board() 
print(b.f()) 
print(b.print_board()) 

在Windows中執行的,它打印:

c:\tmp\_Python>c:/python32/python a.py 
Hello 
Hello 

c:\tmp\_Python>c:/python33/python a.py 
Hello 
Hello 

可能你想寫:

... 
    def print_board(self): 
     print('Hello') 

並命名爲

... 
b.print_board() 
+0

看到我的編輯 - 這只是一個愚蠢的錯誤,我有另一個(但空的)方法具有相同的名稱。我正盯着測試班上錯誤的部分。 – 5th

+0

我明白了。對於這種情況,pylint工具可能是有用的。以下是http://antares.sip.ucm.es/cesar/pylint/的在線版本。它也發現函數定義中存在重複。 – pepr

+0

不太清楚我是否應該接受答案,最終接受答案。鑑於從一開始的問題是關於一個不存在的問題,我想它應該被認爲是一個很好的答案:) – 5th