Почему подклассы не могут переопределить "частный" базовый метод в Python?
В настоящее время я ошеломлен некоторым поведением Python:
class Base(object):
def foo(self):
self.__virtual_function()
self.virtual_function()
def __virtual_function(self):
print("private Base")
def virtual_function(self):
print("public Base")
class Derived(Base):
def __virtual_function(self):
print("private Derived")
def virtual_function(self):
print("public Derived")
d = Derived()
d.foo()
Это печатает
private Base
public Derived
Является ли двойное подчеркивание эффективным делением метода частным и, следовательно, не может быть переопределено подклассами?