gpt4 book ai didi

python - 如何从类内部调用私有(private)模块函数?

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:10 25 4
gpt4 key购买 nike

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

def __myFunc():
...

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

我得到了错误:

NameError: global name '_MyClass__myFunc' is not defined

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

编辑:自发布这篇文章以来,我发现我可以通过使用单下划线而不是双下划线来避免自动重整。我根据“Dive Into Python”使用了两个,它只声明双下划线表示私有(private)函数。

最佳答案

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

模块内的函数绝对没有理由使用两个下划线。如果不应从外部调用函数,程序员通常会遵循在函数名称前放置 一个 下划线的约定。

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

关于python - 如何从类内部调用私有(private)模块函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com