Ich habe den folgenden Code.Warum erbt die untergeordnete Klasse in diesem Beispiel nicht die Methode von der übergeordneten Klasse in Python?
class Foo(object):
def __init__(self):
self.__baz = 40
def foo(self):
print self.__baz
class Bar(Foo):
def __init__(self):
#super(Bar, self).__init__()
self.__baz = 21
def bar(self):
print self.__baz
x = Bar()
x.foo()
x.bar()
ich diesen Fehler:
Traceback (most recent call last):
File "classes.py", line 15, in <module>
x.foo()
File "classes.py", line 5, in foo
print self.__baz
AttributeError: 'Bar' object has no attribute '_Foo__baz'
warum ist die foo
Methode nicht in Bar
geerbt.
EDIT: Es funktioniert gut, wenn Sie Super anrufen, die auskommentiert ist.
Nicht sicher, aber nicht weil __variablename eine spezielle Variable ist? http://StackOverflow.com/a/1301369/2537322 – meyer9
Kurioser, warum funktioniert es, wenn Sie 'super()' nennen? –
Keine Antwort, aber fügt mehr Details hinzu - wenn Sie es von "__baz" zu "baz" ändern, drucken beide Aufrufe 21. Wenn Sie 'super()' aufrufen und als '__baz 'belassen, drucken sie' 40' und '21' beziehungsweise. –