我有以下代码:def __static_func(name): print 'Name = ' + nameclass A: def __init__(self, name): self.name = name def fun(self): __static_func(self.name)a = A('foo')a.fun()在 Python 2.7 上启动时,它会生成NameError: global name '_A__static_func' is not defined所以问题是如何从类方法中调用全局函数?
2 回答

30秒到达战场
TA贡献1828条经验 获得超6个赞
我最近在读一本书“通过 O'Reilly 学习 Python ”(第 944 页,第 31 章),其中提到当您使用双下划线__
作为方法或变量的起始字符时Class
,它会自动将 附加_classname
到那个函数在哪里classname
是类名。这样做是为了将名称本地化为它所属的类。这在Pseudoprivate 类属性的上下文中称为Name Mangling。
这样,您就可以使用相同的名称__variable
在两个不同的类A
,并B
作为变量/方法将成为私下_A__variable
和_B__variable
分别。因此,只需使用单个下划线命名您的全局函数即可,以避免这种冲突。
添加回答
举报
0/150
提交
取消