我写了一个名为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'
任何人都可以解释为什么会发生这种情况以及我的代码有什么问题?我是一名高中生。你能跟我解释一下吗?你可以帮我解决这个问题吗?
答案 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