2024-09-29 22:19:47 发布
网友
我有一个模块看起来像这样:
def __myFunc(): ... class MyClass(object): def __init__(self): self.myVar = __myFunc()
我得到了一个错误:
如何从类内部调用此函数?在
编辑:自从发布这篇文章后,我发现我可以通过使用单下划线而不是双下划线来避免自动损坏。我使用的是“divinto Python”中的two,它只声明一个双下划线表示私有函数。在
这是因为如果名称以两个下划线开头,Python的编译器会替换类内部的方法调用(和属性访问)。似乎这也适用于函数。例如,对方法self.__X的调用将替换为self._ClassName__X。这使得伪私有属性和方法成为可能。在
self.__X
self._ClassName__X
绝对没有理由在模块内为函数使用两个下划线。如果函数不应该从外部调用,程序员通常遵循在函数名前面加一个下划线的惯例。在
例如,只有在类中的属性/方法不希望被子类覆盖时,才需要使用两个下划线。但这在少数情况下是有用的。在
这是因为如果名称以两个下划线开头,Python的编译器会替换类内部的方法调用(和属性访问)。似乎这也适用于函数。例如,对方法
self.__X
的调用将替换为self._ClassName__X
。这使得伪私有属性和方法成为可能。在绝对没有理由在模块内为函数使用两个下划线。如果函数不应该从外部调用,程序员通常遵循在函数名前面加一个下划线的惯例。在
例如,只有在类中的属性/方法不希望被子类覆盖时,才需要使用两个下划线。但这在少数情况下是有用的。在
相关问题 更多 >
编程相关推荐