今天我看到 - 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']
为什么蟒蛇这样做?有没有办法绕过它?