猿问

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

我有以下代码:


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

所以问题是如何从类方法中调用全局函数?


GCT1015
浏览 250回答 2
2回答

30秒到达战场

我最近在读一本书“通过 O'Reilly 学习 Python ”(第 944 页,第 31 章),其中提到当您使用双下划线__作为方法或变量的起始字符时Class,它会自动将 附加_classname到那个函数在哪里classname是类名。这样做是为了将名称本地化为它所属的类。这在Pseudoprivate 类属性的上下文中称为Name Mangling。这样,您就可以使用相同的名称__variable在两个不同的类A,并B作为变量/方法将成为私下_A__variable和_B__variable分别。因此,只需使用单个下划线命名您的全局函数即可,以避免这种冲突。
随时随地看视频慕课网APP

相关分类

Python
我要回答