为了账号安全,请及时绑定邮箱和手机立即绑定

如何从类方法调用全局函数

如何从类方法调用全局函数

GCT1015 2021-07-15 15:11:06
我有以下代码: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分别。因此,只需使用单个下划线命名您的全局函数即可,以避免这种冲突。


查看完整回答
反对 回复 2021-07-21
  • 2 回答
  • 0 关注
  • 221 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信