编辑:我的错误 - 在另一个地方只有一个传递的另一个方法名称(带有下划线)。愚蠢的我。请关闭。
我有一个包含两个方法的类,每个方法返回一个简单的字符串。这两种方法之间唯一略微有质的区别在于,其名称中有一个下划线而另一个没有。但是,带有下划线的那个在调用时不会返回字符串。在方法名称中使用下划线似乎遵循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。
答案 0 :(得分: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()