以下代码仅在我注释掉初始化时才有效。
class What:
def __init__(self):
pass
def method1(self):
print 'method1'
def main():
b = What()
if hasattr(b,"method1"):
print "b.method1"
b.method1()
main()
如果没有注释掉,我收到错误消息......
Traceback (most recent call last):
File "strange.py", line 17, in <module>
main()
File "strange.py", line 15, in main
b.method1()
AttributeError: What instance has no attribute 'method1'
但是,如果我输入相同的方法并调用它,那就完全没问题了......
def method2(self):
print 'method2'
我对文件进行了od -c,文本中没有奇怪的字符 使用Python 2.7.2
答案 0 :(得分:5)
我认为你正在混合标签和空格。
使用每个缩进4个空格的代码(符合pep8的空格),它工作正常。但是这个
class What:
def __init__(self):
pass
def method1(self):
print 'method1'
def main():
b = What()
if hasattr(b,"method1"):
print "b.method1"
b.method1()
main()
如果你有方法1的标签,Python会看到什么,这会产生你看到的错误。