关于python中的__dict__和global声明的关系

tnn1234 2012-05-20 09:20:01
我这里有个例子,搞不清楚怎么回事
class TestCaseBase:
#global a
a = 1
def func_1(self):
a = 1
print a

print TestCaseBase.__dict__
打印出来的内容是:
{'a': 1, '__module__': '__main__', 'func_1': <function func_1 at 0x00E87170>, '__doc__': None}


class TestCaseBase:
global a
a = 1
def func_1(self):
a = 1
print a

print TestCaseBase.__dict__
打印出来的内容却是:
{'__module__': '__main__', 'func_1': <function func_1 at 0x00D86170>, '__doc__': None}

为什么在a被声明成global的时候在类的__dict__属性中没有呢?
...全文
278 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
薛定谔之死猫 2012-05-23
  • 打赏
  • 举报
回复
声明global后变量就跑到模块中去了,不局限于这个类
iEverX 2012-05-22
  • 打赏
  • 举报
回复
楼上正解。既然是global,那就不在类中了,只是在类中能够使用它而已
libralibra 2012-05-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
print TestCaseBase.__dict__

为什么在a被声明成global的时候在类的__dict__属性中没有呢?
[/Quote]

你print的是TestCaseBase的__dict__
a被声明称global之后不是类的成员啊,怎么会有呢?
tim_spac_126 2012-05-20
  • 打赏
  • 举报
回复
a = 'global value'

class AClass:
a = 'Class value'
def __init__(self, **kwg):
self.__dict__ = kwg
def test(self):
global a
print '%s, %s, %s'%(
a, AClass.a, self.a
)

aclass = AClass(a='instance value')
aclass.test()
# global value, Class value, instance value

a = 'GLOBAL VALUE'
aclass.test()
# GLOBAL VALUE, Class value, instance value

aclass.a = 'INSTANCE VALUE'
aclass.test()
# GLOBAL VALUE, Class value, INSTANCE VALUE
tnn1234 2012-05-20
  • 打赏
  • 举报
回复
自己先顶起~~

37,741

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧