Почему подклассы не могут переопределить "частный" базовый метод в 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

Является ли двойное подчеркивание эффективным делением метода частным и, следовательно, не может быть переопределено подклассами?

0 ответов

Другие вопросы по тегам