Ich lerne Klassen und habe ein einfaches Programm geschrieben, um sie besser zu verstehen. Das Programm ist im Grunde eine Klasse zum Öffnen von Dateien. Ich bekomme jedoch immer:
NameError: Der globale Name "Buch" ist nicht definiert
Ich dachte das initialisieren self.book = book
in dem __init__
Eine Methode würde es mir ermöglichen, sie an die nächste Methode zu übergeben. Aber das funktioniert nicht. Wie kann ich bestehen? self.book
auf die open_file
Methode?
class AnalyzeBook(object):
def __init__(self, filename, book):
self.filename = filename
self.book = book
def open_file(self, filename, book):
with open(self.filename) as f:
self.book = f.readlines()
return self.book
book_analysis = AnalyzeBook("lordoftherings.txt", book=None)
book_analysis.open_file("lordoftherings.txt", book=None)
Bearbeiten: Mein Code wurde aktualisiert, um ein Buch hinzuzufügen __init__
und book=None
und das hat funktioniert.
Antworten:
1 für die Antwort № 1Fügen Sie Ihrem Klassenkonstruktor ein Variablenbuch hinzu.
def __init__(self, filename, book):
self.filename = filename
self.book = book
Wenn Sie eine Instanz der AnalyzeBook-Klasse initialisieren, geben Sie auch die Variable book an.