今日、私はそれを見る-pythonは_$CLASSNAME$
、名前が。のメソッドに追加します__
。
簡単な例:
>>> class A:
... def a(self):
... self.b()
... def b(self):
... print('A.b')
...
>>> class B(A):
... def b(self):
... print('B.b')
...
>>> B().a()
B.b
それは機能しますが、:
>>> class A:
... def a(self):
... self.__b()
... def __b(self):
... print('A.b')
...
>>> class B(A):
... def __b(self):
... print('B.b')
...
>>> B().a()
A.b
なんで?わからないので、汚しました。ここにあります:
>>> print([fn for fn in dir(B) if fn[-2:] != '__'])
['_A__b', '_B__b', 'a']
なぜPythonはそれをするのですか?それを回避する方法はありますか?