Ich arbeite an einer Codebasis, die oop verwendet, und ich bin relavtiv neu dazu. Meine Frage speziell ist, warum NewMenuItem nicht von Datei erben?Wie funktioniert diese Python-Vererbungshierarchie? (spezifisches Beispiel)
Code Koje mit Code zu spielen: https://codebunk.com/b/350127244/
"" "Build Klassenhierarchie und erhalten Werte von decendants" ""
Import inspizieren
def Selbsttest():
class Menu(object):
def __init__(self):
super(Menu, self).__init__()
self.value = "Menu"
class MenuBar(Menu):
#having object in there makes it a new style object, which allows us to use super
def __init__(self):
super(MenuBar, self).__init__()
self.value = "MenuBar"
class File(MenuBar):
def __init__(self):
Menu.__init__()
super(File, self).__init__()
self.value = "File"
self.FileValue = "File here!"
class New(Menu):
def __init__(self):
Menu.__init__()
pass
class NewMenuItem(Menu):
def __init__(self):
"""
Q 1- Why do I need self here?
Menu.__init__(self)
"""
Menu.__init__(self)
pass
def show_vals(self):
print(self.value)
"""
Q 2 -why wont this work?
def show_vals2(self):
print(self.FileValue)
"""
example = File.New.NewMenuItem()
example.show_vals()
"""
Q 3 - Why do I get this error with this line?
inspect.getmro(example)
AttributeError: 'ManageProduct' object has no attribute '__bases__'
"""
Ich versuche zu verstehen, was Zeile für Zeile passiert, aber was ich nicht verstehe, ist, warum NewMenuItem nicht von Datei erbt.
Ich versuchte, die Instanziierung der Datei hart-Codierung, so: Datei. init()
aber dann bekomme ich einen Fehler, wenn ich das File-Objekt übergeben:
File.__init__(File())
Ich denke, was ich habe Schwierigkeiten mit ist:
-inheritance Bäume -super Klassen -Warum müssen wir Instanziierungen in diesem Fall hart codieren
Beachten Sie, dass dies der Code ist, auf den ich gestoßen bin. Ich bin mir nicht sicher, warum das so ist.
Danke das macht so viel Sinn! –