类属性中的属性错误

时间:2016-12-10 05:04:23

标签: python class

我写了一个名为cl的课程:

class cl :
def __int__(self):
    self.a = 0


def increment(self):
    self.a +=1

def print_a(self):
    print ("value : "+str(self.a))

我写了另一个名为test的课程。但是,调用方法时出错了。

 from cl import *

class test :
    def __int__(self):
        self.b = 0
        self.c = cl()


def main(self):
    self.c.increment()
    self.c.print_a()
    self.c.increment()
    self.c.print_a()

d = test()
d.main()

我得到的是:

 Traceback (most recent call last):
  File "test_file.py", line 19, in <module>

    d.main()
  File "test_file.py", line 12, in main
    self.c.increment()
AttributeError: test instance has no attribute 'c'

任何人都可以解释为什么会发生这种情况以及我的代码有什么问题?我是一名高中生。你能跟我解释一下吗?你可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您使用__init__错误拼写__int__

class cl :
    def __int__(self):
        self.a = 0

应该是

class cl :
    def __init__(self):
        self.a = 0

请注意,在test类中包含main方法实际上是Python中的反模式;

的形式
def main():
    ...

if __name__ == "__main__":
    main()

是首选,更像Pythonic。

有关if __name__ == "__main__"模式的参考,请参阅:

答案 1 :(得分:0)

main函数不属于类测试,它属于你的测试类所在的test.py,所以main中的self是test.py,而不是test