代码之家  ›  专栏  ›  技术社区  ›  Nick

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

  •  3
  • Nick  · 技术社区  · 7 年前

    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()
    

    在Python2.7上启动时,它会产生

    NameError: global name '_A__static_func' is not defined
    

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

    2 回复  |  直到 7 年前
        1
  •  14
  •   Sheldore    7 年前

    我最近在读一本书“ Learning Python by O'Reilly “(第944页,第31章)有人提到,当你使用双下划线 __ Class _classname 到那个函数那里 classname 名字改编 伪私有类属性

    这样你就可以使用相同的名字 __variable A B 因为变量/方法将成为 _A__variable _B__variable 分别。因此,只需使用一个下划线将全局函数命名为其他名称,例如,以避免这种冲突。

        2
  •  4
  •   Phillip    7 年前

    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()
    

    应该有用