Rozważmy klasę z „prywatny” metody takie jak:override „prywatny” metody w Pythonie
class Foo(object):
def __init__(self):
self.__method()
def __method(self):
print('42')
Kiedy próbuję podklasy Foo
i sposobu obejścia __method
, można zauważyć, że Foo.__method
nadal nazywa, zamiast MoreFoo.__method
.
class MoreFoo(Foo):
def __method(self):
print('41')
>>> MoreFoo()
42
<__main__.MoreFoo object at 0x7fb726197d90>
Jaki byłby sposób na zastąpienie takiej metody?
http://stackoverflow.com/questions/1301346/the-meaning-of-----double-underscore-before-an-object-name-in-python – tacaswell
Ciekawe, gdzie Czy wpadliście na pomysł, że jest to odpowiednik zmiennej prywatnej? To naprawdę złe nieporozumienie i widzę to cały czas, nie mając pojęcia, skąd pochodzi. –
@Lattyware - Myślę, że pochodzi z sekcji o dokumentach o nazwie "Zmienne prywatne i lokalne klasy referencyjne". Mówi się, że nie ma żadnych zmiennych prywatnych ... ale to, co podwójnie podkreślisz, jest najbliższe - "Ponieważ istnieje ważna przypadek użycia dla prywatnych członków klasy (a mianowicie, aby uniknąć kolizji nazwisk z nazwami określonymi przez podklasy), jest ograniczone wsparcie dla takiego mechanizmu, ... " – mgilson