Problem mit Klassen

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.
Antworten
zenker
User
Beiträge: 19
Registriert: Dienstag 25. August 2009, 17:04

(Python 3.0.1+ (r301:69556, Apr 15 2009, 17:25:52))

Hallo,

ich hab da ein kleines Problem mit "Klassen"

Ich habe folgenden Code im Hauptprogramm

Code: Alles auswählen

#/usr/bin/python
# -*- coding: utf-8 -*-


import klassen

datei=klassen.Dateipfad()
titel=klassen.Titelzeilen()

und in der Datei "klassen. py" folgenden Code:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-




class Dateipfad(object):
    def __init__(self):
        
        self._home="xxx"
        
        self.pf_begegnungen=self._home+"/begegnungen/"
        self.pf_rangliste=self._home+"/rangliste/"
        self.pf_spielerdaten=self._home+"/spielerdaten/"
        self.pf_gel_spieler=self._home+"/geloeschte_spieler/"

class Titelzeilen(object):
    def __init__(self):
        self.bg8="Eingabe 8-Ball"
Wenn ich mein Hauptporogramm starte, gibt die Pythonshell mir folgenden Fehler aus:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/klaus/python31_elobillard/elobi.py", line 8, in <module>
    titel=klassen.Titelzeilen()
AttributeError: 'module' object has no attribute 'Titelzeilen'
Und ich kann mir nicht erklären wieso!?!

Stelle gerade fest, das meine "*.pyc"anscheinend nicht neu compiliert wird. Da ich IDLE als IDE verwende, frage ich mich, ob IDLE bei Änderungen in den Modulen die "*.pyc" neu anlegt?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Ich vermute mal folgendes: Du hast das Modul mit der Klasse "Dateipfad" erstellt und dann dein Hauptprogramm. Dieses hast du dann ausgeführt. Anschließend kam die Klasse "Titelzeilen" hinzu und du hast wieder dein Programm ausgeführt.

Das Problem liegt dann ganz eindeutig bei Idle, da die Module nicht neu geladen werden. Das Problem hast du allgemein in einem interaktiven Interpreter. Benutze besser einen anderen Editor (gibt es einige Threads hier im Forum zu) und starte deine Skripte dann darüber oder über "python dein_script.py". Dann wirst du eine Menge an Problemen los.

Noch ein paar Anmerkungen zu deinem Code:

- Dateipfad und Titelzeilen sind seltsame Namen für Klassen. Ich kann mir darunter keine sinnvollen OBJEKTE vorstellen. Es hört sich eher so an, als wenn du Listen oder einfach nur Strings verwenden möchtest.

- Da du Python 3.0 verwendest (es gibt mittlerweile übrigens 3.1) brauchst du nicht von "object" zu erben. Dies geschieht implizit.

- Benutze richtige Namen. "pf_..." ist total nichtsssagend. Wahrscheinlich für kurz für "Dateipfad". Das bestätigt aber nur noch mehr, dass du Listen, Strings und Funktionen möchtest. "bg8" hat ebenfalls keinen Informationsgehalt.

- Pfade setzt man übrigens mit "os.path.join" zusammen, nicht mit +

- Vielleicht möchtest du auch noch einen Blick in PEP 8 werfen.
Das Leben ist wie ein Tennisball.
zenker
User
Beiträge: 19
Registriert: Dienstag 25. August 2009, 17:04

Danke erstmal!

Ja, das mit "Klasse erstellt, Hauptprogramm ausgeführt und zweite Klasse hinzugefügt" kommt hin.
Der eigentlich Code kommt von Python 2.6.2 und wurde mit "DrPython" erstellt, auf dem das erstellte Programm auch anstandslos läuft.
Ich wollte den Code bloß auf Python3.0.1 portieren, da es mir logischer erscheint meine Autodidaktikanstrengungen in Python 3.x zu investieren! :-)

Abgesehen von den dir nichtsagenden Variablennamen scheint m.E. IDLE (für Python 3.0.1) wirklich Probleme zu haben.

Python 3.1 wird für Ubuntu 9.04 im Moment nicht als Paket angeboten und zum selbercompilieren habe ich keine Lust.

Nun gut, als Anfänger werde ich mich dann noch mit deinen anderen Hinweisen auseinandersetzen und danke noch mal!
Schönen Abend (oder Morgen) dann noch.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Idle hat nicht erst seit 3.0 so seine Probleme, auf die konnte man sich schon immer verlassen ^^ Wenn jemand Probleme mit nicht neu geladen Modulen oder seltsamen Verhalten seiner GUI hat, dann ist Idle ein guter Kandidat. Du bist da in bester Gesellschaft :wink:

Da du gerade angefangen hast Python zu lernen, empfehle ich dir einfach mal deinen Code hier zu posten, wenn du glaubst, dass dein Programm fertig ist. Im Allgemeinen wird Code hier ganz gerne auseinander genommen und du bekommst dadurch eine Menge nützlicher Hinweise.
Das Leben ist wie ein Tennisball.
zenker
User
Beiträge: 19
Registriert: Dienstag 25. August 2009, 17:04

EyDu hat geschrieben:...Da du gerade angefangen hast Python zu lernen, empfehle ich dir einfach mal deinen Code hier zu posten, wenn du glaubst, dass dein Programm fertig ist. Im Allgemeinen wird Code hier ganz gerne auseinander genommen und du bekommst dadurch eine Menge nützlicher Hinweise.
Ok, wenn mir nach 'ner Runde auspeitschen zumute ist, mach ich das! ;-)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

zenker hat geschrieben:Ok, wenn mir nach 'ner Runde auspeitschen zumute ist, mach ich das! ;-)
Dein Code wird leiden, nicht du und lernst auch noch dazu.
Und wir haben unseren Spass beim Code foltern 8)
Antworten