除非我注释掉__init__,否则Python类看不到方法

时间:2013-09-28 05:21:18

标签: python

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

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

1 个答案:

答案 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会看到什么,这会产生你看到的错误。