如果我有一个python文件,如下所示
import time
class abc:
def func1(self):
while True:
do something
time.sleep(5)
xyz = abc()
xyz.func1()
以上操作完全符合预期
如果我将类定义移出到一个单独的.py文件中并导入它
import time
from test1 import abc
xyz = abc()
xyz.func1()
按预期工作,直到它击中时间。睡眠(5)时,它的错误说,时间没有定义
我试过将时间导入添加到类定义中,但似乎仍然遇到同样的问题,我错过了什么。
将导入移到类定义文件中似乎并不能解决这个问题,无论是将其添加到顶部还是init中。
1条答案
按热度按时间kqlmhetl1#
看一下关于import语句的python文档。
引自此处:
在import语句发生的作用域的本地命名空间中定义一个或多个名称。
因此,顶层导入绑定在模块级别,并且可以从该模块的任何位置访问名称
time
。如果将导入移到方法内部,则可以在方法的局部范围内访问它,而在方法外部不可见。
因此,您不希望将导入移到其他模块中,因为您不会在那里使用它。要使其正常工作,您应该保留
time
的导入,并只将函数调用移到外部:[Not与您的问题提示相关]您还应该查看PEP8并遵循其约定。