python中列表的global()函数
Python:3.8.1 我无法使用global()函数在类变量中追加数据python中列表的global()函数,python,Python,Python:3.8.1 我无法使用global()函数在类变量中追加数据 class test(): __cv__ = [] def testglobalmethod(self, data): globals()['__cv__']=[data] print(__cv__) rrr = test() rrr.testglobalmethod("1") rrr.testglobalmethod(
class test():
__cv__ = []
def testglobalmethod(self, data):
globals()['__cv__']=[data]
print(__cv__)
rrr = test()
rrr.testglobalmethod("1")
rrr.testglobalmethod("2")
预期结果:-
['1','2']
实际结果:-
['1']
['2']
append函数产生以下错误:-
def testglobalmethod(self, data):
globals()['__cv__'].append(data)
print(__cv__)
错误:
KeyError:“\uuuu cv\uuuu”
您有一个类属性,而不是全局变量
class Test():
__cv__ = []
def testglobalmethod(self, data):
Test.__cv__.append(data)
print(Test.__cv__)
rrr = Test()
rrr.testglobalmethod("1")
rrr.testglobalmethod("2")
您有一个类属性,而不是全局变量
class Test():
__cv__ = []
def testglobalmethod(self, data):
Test.__cv__.append(data)
print(Test.__cv__)
rrr = Test()
rrr.testglobalmethod("1")
rrr.testglobalmethod("2")
你为什么要这么做?@wim我最近学习了global()函数。我试着用绳子,效果非常好。因此,我正在尝试使用列表来查看它是如何工作的。
\uuuu cv\uuuu
不是全局的,它是一个类属性。为什么您希望能够通过globals
访问它?您的所有代码都是测试类范围的一部分,这是故意的吗?不要发明自己的dunder名称;它们被保留供语言本身使用。如果您想强调它仅用于test
类的方法,只需使用cv
,或\u cv
。为什么要这样做?@wim我最近学习了global()函数。我试着用绳子,效果非常好。因此,我正在尝试使用列表来查看它是如何工作的。\uuuu cv\uuuu
不是全局的,它是一个类属性。为什么您希望能够通过globals
访问它?您的所有代码都是测试类范围的一部分,这是故意的吗?不要发明自己的dunder名称;它们被保留供语言本身使用。只要使用cv
,或者\u cv
,如果您想强调它仅用于test
类的方法。