扫码关注官方订阅号
光阴似箭催人老,日月如移越少年。
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
login_session是定义在startLogin方法里的,导入的时候不会执行这个方法,所以也不会创建这个变量。只要执行一下startLogin就可以了:
login_session
startLogin
lw = LoginWork() lw.startLogin() # 现在能用login_session了
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
login_session 处于 starLogin 的代码块内,LoginWork 被导入到 b 中虽会创建方法属性 startLogin,但并不会执行其内的代码块,因此 global login_session 是不会被执行的。另外,即便实例化 LoginWork 并执行 startLogin 也是无济于事的,因为 startLogin 的执行是在自己的作用域内,执行完毕后便会释放作用域,而 global 语句并不能跨文件!此外,global 语句并非创建一个全局变量,而只是声明其后的变量来自全局变量。
因此,如果 login_session 和 class LoginWork 在同一作用域,可以这么改:
或者,直接修改 b 文件,将 import 语句改为:
login_session是定义在startLogin方法里的,导入的时候不会执行这个方法,所以也不会创建这个变量。只要执行一下startLogin就可以了: