Wie soll ich mein Paket implementieren, damit ich folgendes schreiben kann.Wie legen Sie Objekte in einem Modul/Package frei?
Angenommen, mein Modul heißt Market. Es ist ein Ordner im Arbeitsverzeichnis meiner Python-Skript namens goShopping.py
In meinem goShopping.py ich das folgende Stück Code in der Lage sein wollen, schreiben:
import market as mk
B = mk.Banana(0.99)
A = mk.Apple(1.10)
A.buy()
B.buy()
Wo Banana und Apple sind Objekte in einer Datei in meinem Modul.
Wie sollte der Modulmarkt geschrieben werden?
Nehmen wir an, ich habe eine Datei im Module-Ordner namens fruits.py, Dort definiere ich Banana und Apple-Klasse. Ich weiß, ich kann den obigen Code wie folgt schreiben:
import market.fruits as mk
B = mk.Banana(0.99)
A = mk.Apple(1.10)
A.buy()
B.buy()
Aber ich will das nicht.
Als Lösung dachte ich über eine Erklärung in __init__.py
(die __init.py
innerhalb des Marktes Ordner) wie folgt mit:
from fruits import Apple,Banana.
Aber ich erhalte den folgenden Fehler:
AttributeError: module 'market' has no attribute 'Banana'
Von Zeile:
B = mk.Banana(0.99)
Wie soll ich strukturieren und was soll ld Ich schreibe, um die Objekte so belichten zu können, wie ich will?
Ich benutze Pythonista für iOS. Ich frage mich, ob das das Problem ist.
Was Sie haben, sollte funktionieren. Wie haben Früchte von Apple importiert, Banana fehlgeschlagen? Was war die Fehlermeldung? Beachten Sie, dass im Allgemeinen bei allen Namen in Python die Groß-/Kleinschreibung beachtet wird, einschließlich der Modul- und Paketnamen. PEP-8 empfiehlt, dass sie alle Kleinbuchstaben sind, was bedeutet, dass ihre entsprechenden Datei-/Ordnernamen auch so sein sollten. – martineau
@martineau Ich habe die Frage mit meiner Fehlermeldung aktualisiert. Nur mein Klassenname ist Großbuchstabe – zeh
Es ist seltsam, dass Sie einen Fehler in der Zeile 'B = mk.Banana (0.99)' bekommen würden, aber nicht eine von der 'von Früchten Import Apple, Banana' in der '__init __. Py'.Fügen Sie direkt nach der Zeile 'import' einen' print (Banana) 'hinzu und sehen Sie, ob das auch zu einem Fehler führt. – martineau