今天,我看到了-蟒蛇添加_$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
为什么? 我不知道,所以我dir'ed它。 这里是:
>>> print([fn for fn in dir(B) if fn[-2:] != '__'])
['_A__b', '_B__b', 'a']
为什么蟒蛇做呢? 有没有办法绕过了吗?