python不能从staticmethod调用模块方法吗?

2024-04-19 20:43:54 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑以下模式:

'''some module body'''

def __foo():
    '''module method foo'''
    pass

class Dummy(object):
    @staticmethod
    def bar():
        __foo()

__foo() # No Error.
Dummy.bar() #NameError: Global name "_Dummy__foo" is not defined.

为什么会这样?你知道吗

---

如果用“\来命名是不好的,那么Python中使模块方法只对内部模块函数/方法可用的最佳实践是什么?你知道吗


Tags: 模块方法objectfoodef模式barbody
1条回答
网友
1楼 · 发布于 2024-04-19 20:43:54

名字开头不要用双下划线。在class语句中找到的任何标识符,至少以2个下划线开始,少于2个下划线结束,都会在其前面加上_Classname,其中Classname是类的名称。这应该为私有ish变量提供有限的支持,但是使用它通常被认为是不好的做法。你知道吗

相关问题 更多 >