Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
from CSong import *
from CRecord import *
r=CRecord()
r.addSong("song1")
Beim Run des test.py-Moduls ist in der Shell folgende Fehlerausgabe zu lesen:
Traceback (most recent call last):
File "C:\test.py", line 6, in -toplevel-
r.addSong("song1")
File "C:\CRecord.py", line 11, in addSong
S=CSong(title)
NameError: global name 'CSong' is not defined
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Hat nichts mit dem Problem zu tun, aber der Quelltext sieht extrem unpythonisch aus. Das sieht aus als wenn eine "Discipline & Bondage"-Sprache in Python nachgebaut werden soll.
`__slots__` sind dazu gedacht um Speicherplatz zu sparen wenn man von einem Typen wirklich *viele* Objekte erzeugt und nicht um unveränderliche Attribute zu bekommen.
Der doppelte Unterstrich soll Namenskollisionen bei tiefer Vererbung oder Mixins verhindern und kein Ersatz für ``private`` sein. Dazu reicht ein einfacher Unterstrich, damit andere wissen das es sich um Interna handelt.
Und dann wäre da noch die Namensgebung: Ein "C" um Klassennamen zu kennzeichnen ist überflüssig. Das es sich um eine Klasse handelt, erkennt man schon daran, dass der erste Buchstabe gross geschrieben ist.
Der Style Guide empfiehlt kleine_worte_mit_unterstrichen als Attributnahmen. (Methoden sind auch Attribute)
Sternchenimports sind böse. Man holt sich damit alles aus einem anderen Modul in den aktuellen Namensraum. Wenn das importierte Modul seinerseits Sternchenimports gemacht hat, dann holt man sich transitiv auch das alles mit in den Namensraum. Damit wird die Trennung nahezu komplett aufgehoben und der Sinn von Modulen wird unterlaufen.
Die beiden Klassen hätte man auch prima in einem Modul unterbringen können, da sie thematisch sehr eng verwandt sind.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
BlackJack hat geschrieben:Hat nichts mit dem Problem zu tun, aber der Quelltext sieht extrem unpythonisch aus. Das sieht aus als wenn eine "Discipline & Bondage"-Sprache in Python nachgebaut werden soll.
Um genau zu sein erinnert dies Beispiel extrem an Java, wo in einer Java-Dati genau eine Klasse ist. An sich wundert es mich, warum die das so machen, denn wirklich zusätzliche übersicht bringt das nicht - bei kleineren Sachen verstreut es den Quellcode nur unnötig. Da ist es IMHO besser wenn man dem Programmierer mehr Freiheiten lässt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice