我有以下代码:
def __static_func(name):
print 'Name = ' + name
class 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
所以问题是如何从类方法中调用全局函数?
我最近在看一本书”学习 Python 作者:O'Reilly http://shop.oreilly.com/product/0636920028154.do" (第 944 页,第 31 章)并且提到当您使用双下划线时__
作为方法或变量的起始字符Class
,它会自动附加_classname
到该函数,其中classname
是类名。这样做是为了将名称本地化为其所属的类。这就是所谓的名称修改在这样的背景下伪私有类属性.
这样您就可以使用相同的名称__variable
在两个不同的班级A
and B
因为变量/方法将变成私有的_A__variable
and _B__variable
分别。因此,只需将全局函数命名为带有单个下划线的其他名称即可避免这种冲突。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)