如何从类内部调用私有模块函数?

2024-09-29 22:19:47 发布

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

我有一个模块看起来像这样:

def __myFunc():
    ...

class MyClass(object):
    def __init__(self):
        self.myVar = __myFunc()

我得到了一个错误:

^{pr2}$

如何从类内部调用此函数?在

编辑:自从发布这篇文章后,我发现我可以通过使用单下划线而不是双下划线来避免自动损坏。我使用的是“divinto Python”中的two,它只声明一个双下划线表示私有函数。在


Tags: 模块函数self编辑objectinitdef错误
1条回答
网友
1楼 · 发布于 2024-09-29 22:19:47

这是因为如果名称以两个下划线开头,Python的编译器会替换类内部的方法调用(和属性访问)。似乎这也适用于函数。例如,对方法self.__X的调用将替换为self._ClassName__X。这使得伪私有属性和方法成为可能。在

绝对没有理由在模块内为函数使用两个下划线。如果函数不应该从外部调用,程序员通常遵循在函数名前面加一个下划线的惯例。在

例如,只有在类中的属性/方法不希望被子类覆盖时,才需要使用两个下划线。但这在少数情况下是有用的。在

相关问题 更多 >

    热门问题