我是 python 新手。 基类/python文件(Base.py).
SESSION_ID = ""
def m1():
print "SESSION_ID in base: ",SESSION_ID
派生类(Derived.py)
from Base import *
class Derived():
def m2(self):
global SESSION_ID
SESSION_ID = 10
print "SESSION_ID in derived: ", SESSION_ID
def main():
c2 = Derived()
c2.m2()
m1()
if __name__ == "__main__":
main()
当我执行下面的 Derived.py 文件时,输出是:
SESSION_ID in derived: 10
SESSION_ID in base:
我希望在 m2() 中设置的值反射(reflect)在 m1() 中。所以预期的输出是:
SESSION_ID in derived: 10
SESSION_ID in base: 10
你能帮忙吗?
请您参考如下方法:
模块中的全局变量仅仅是一个属性(即一个成员 该模块的实体)。
因此,当您使用 import * 时,会创建新的本地模块全局 SESSION_ID,因此基础中的 SESSION_ID 不受您所做更改的影响在派生中。
基本上,修改base.SESSION_ID不需要使用Derived.py中的global语句,调整import 就够了,看下面的代码:
from settings import base
class Derived():
def m2(self):
base.SESSION_ID = 10
print "SESSION_ID in derived: ", base.SESSION_ID
def main():
c2 = Derived()
c2.m2()
base.m1()
if __name__ == "__main__":
main()
