1

以下代码仅在我注释掉初始化程序时才有效。

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()

如果它没有被注释掉,我会收到错误消息……</p>

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'

但是,如果我输入相同的方法并调用它,则完全没有问题……</p>

    def method2(self):
        print 'method2'

我已经 od -c 文件并且文本中没有奇怪的字符使用 Python 2.7.2

4

1 回答 1

4

我认为您正在混合制表符和空格。

使用每个缩进 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 会看到什么,这将产生您看到的错误。

于 2013-09-28T05:28:19.657 回答