kam ich mit einer Situation, in der die Methode der Klasse A aus der Klasse B.Wie das folgende Programm ist möglich in Python
class A(object):
def __init__(self, a):
self.a = a
def abc(self):
print self.a
class B(A):
def __init__(self):
super(B, self).abc()
def method1():
a = A(2)
method1()
b = B()
Expecting Output: 2
Ist es möglich, nennen Methode ‚abc‘ aus der Klasse B aufgerufen werden, mit wechselnden Klasse A und sollte Klasse A-Objekt in Klasse B nicht erstellen. Wenn ja, dann lassen Sie mich bitte die Lösung wissen.
Das obige Programm, das ich versuchte, gibt einen Fehler.
Und die Fehler, die ich bekommen habe ist unter
Traceback (most recent call last):
File "a.py", line 12, in <module>
b = B()
File "a.py", line 10, in __init__
super(B, self).abc()
File "a.py", line 6, in abc
print self.a
AttributeError: 'B' object has no attribute 'a'
Was erwarten Sie diese zu drucken, wenn man bedenkt 'a' nicht auf etwas initialisiert wird? – Karin
'self.a' ist in' A's '__init __()' definiert. Da Sie "__init __()" in "B" außer Kraft setzen, ist "self.a" nicht in "B" definiert. – MattDMo
Sie müssen 'super (A, self) .__ init __ (...)' aufrufen, um sicherzustellen, dass alle Attribute richtig gesetzt sind. – jonrsharpe