python自定义类导入问题
本文介绍了python自定义类导入问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
文件1:a.py
内容:
class LoginWork:
def __init__(self):
pass
def startLogin(self):
global login_session
pass
文件2:b.py
内容:
from a import LoginWork
class SpiderWork:
def __init__(self):
pass
def spiderNow(self):
login_session.post(...) <=====问题出现在这里了
pass
我的b.py文件要怎样引入a.py中的login_session这个内容的
貌似我怎么导都不能引入的。
解决方案
login_session 处于 starLogin 的代码块内,LoginWork 被导入到 b 中虽会创建方法属性 startLogin,但并不会执行其内的代码块,因此 global login_session 是不会被执行的。另外,即便实例化 LoginWork 并执行 startLogin 也是无济于事的,因为 startLogin 的执行是在自己的作用域内,执行完毕后便会释放作用域,而 global 语句并不能跨文件!此外,global 语句并非创建一个全局变量,而只是声明其后的变量来自全局变量。
因此,如果 login_session 和 class LoginWork 在同一作用域,可以这么改:
class LoginWork:
login_session = login_session #将全局变量变为类属性
def __init__(self):
pass
def startLogin(self):
pass
from a import LoginWork
class SpiderWork:
def __init__(self):
pass
def spiderNow(self):
LoginWork.login_session.post(...) #注意这里的调用
pass
或者,直接修改 b 文件,将 import 语句改为:
import a
class SpiderWork:
def __init__(self):
pass
def spiderNow(self):
login_session.post(...)
pass
这篇关于python自定义类导入问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文