我在Ubuntu 14.04上使用python 2.7 32位。这有点难以描述,但我试图使用" __ main __"一个班级。
这是main.py文件:
import time
class Test:
def __init__(self):
self.var1 = 1
self.var2 = "foo"
import less
self.a = less.c()
def run(self):
self.a.update()
d = Test()
while True:
time.sleep(0.2)
d.run()
这是另一个less.py文件:
from __main__ import Test
class c:
def __init__(self):
self.a = "a"
self.b = "b"
def update(self):
if (Test.var1 == 1):
print(self.a)
当我运行main.py脚本时,终端会抛出此错误:
Traceback (most recent call last):
file "main.py", line 18, in <module>
d.run
file "main.py", line 12, in run
self.a.update()
file "/home/username/Workspace/less.py", line 9, in update
if (Test.var1 == 1):
AttributeError: class Test has no attribute "var1"
我的问题是为什么less.py在类Test中找不到属性。
答案 0 :(得分:1)
您的即时错误是因为课程Test
没有属性var1
。 Test
的实例具有该属性,因为它们已执行创建属性的__init__
方法。
顺便说一句:你不应该导入__main__
,它最终会成为坏消息。在另一个模块中定义您的类,并将该新模块导入主文件和需要该类的其他文件。
答案 1 :(得分:0)
评论和答案已经为您提供了解决问题的正确方法 要修复它,请立即修改您的代码 但最终我认为你需要知道类和实例变量的区别 请参阅“Class and Instance Variables”文档。
class Test:
var1 = None
var2 = None
def __init__(self):
Test.var1 = 1
Test.var2 = "foo"
import less