Die „richtige“ Art und Weise, was Sie tun möchten, ist zu Überschreibung das Verfahren, es ist nicht zu überschreiben. Sie tun dies, indem Sie eine Unterklasse der Klasse erstellen und eine neue Definition für eine oder mehrere ihrer Methoden bereitstellen.
Vor allem wenn es einen Fehler in der Definition von classA.functionA()
- Sie self
Argument enthalten müssen:
class classA:
def functionA(self):
print('Hello World!')
Damit korrigierte Sie dann eine neue Unterklasse von classC
in fileB.py
definieren müssen, die überschreibt functionA()
:
from fileA import classC
class classD(classC):
def functionA(self):
print('classD.functionA(): Hello World!')
>>> c = classC()
>>> c.functionA()
Hello World!
>>> d = classD()
>>> d.functionA()
classD.functionA(): Hello World!
Es ist erwähnenswert, dass Klassen classB
und classC
sinnlos erscheinen gegeben, dass (wie gezeigt) Sie nehmen keine Änderungen an der Basisklasse A
vor. Sie könnten also direkt classA
ableiten.
Dies ist das grundlegendste objektorientierte Design/Programmierung, also schlage ich vor, dass Sie sich ein oder zwei Tutorials anschauen.
Wie ich oben sagte, ist dies der richtige Weg, um es zu tun. Sie können die Methode auch wie folgt ersetzen/überschreiben:
Aber überschreiben ist vorzuziehen, es zu überschreiben. Ein Problem besteht darin, dass beim Überschreiben der Methode alle bereits vorhandenen Instanzen von classC
ebenfalls betroffen sind, wie in der letzten Zeile des obigen Codes gezeigt.
Ich bin mir nicht sicher, was Sie erreichen möchten. Sie können dieselbe Syntax in 'fileB' verwenden, um' classC' wie in 'fileA' zu überschreiben. Gibt es eine Methode, die du dynamisch in 'fileB' definierst? – rmorshea