当使用内置debugDescription
函数时,它似乎这样做:当我尝试访问我设置为从类中更改的全局值(不是全局类,因为它将被初始化覆盖。无论有多少类的初始化,我都应该保留和使用全局。
像一些示例代码:
globals()
发生的追溯:
somevalue = False
class SomeClass(object):
"""
...
"""
def __init__(self):
self.change_global_value()
def change_global_value(self):
"""
Changes global module values that this class is in.
"""
globals().somevalue = True # Error. (line 14)
self.__module__.globals().somevalue = True # Error. (line 14, after some changes)
somevalue = True # Error as well. (line 14, after some more changes)
答案 0 :(得分:2)
globals()
会返回dict
,因此您可以使用globals()['somevalue'] = 'newvalue'
分配新值:
somevalue = False
class SomeClass(object):
"""
...
"""
def __init__(self):
self.change_global_value()
def change_global_value(self):
"""
Changes global module values that this class is in.
"""
globals()['somevalue'] = True
首选表单只是将变量定义为global:
somevalue = False
class SomeClass(object):
"""
...
"""
def __init__(self):
self.change_global_value()
def change_global_value(self):
"""
Changes global module values that this class is in.
"""
global somevalue
somevalue = True
请注意,这在一般情况下通常是不好的做法,特别是在课程中。