Neuling: Syntaxproblem bei der Klassendefinition

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
timadlr
User
Beiträge: 4
Registriert: Samstag 7. Oktober 2006, 00:17

Hey zusammen,

ich bin absolut neu im Python-Thema und versuche mich zusammen mit einem Python-Buch durch die django Installtion zu schlagen. Allerdings habe ich hier ein Problem, dass ich irgendwie nicht verstehe. Laut Buch und Doku mache ich alles richtig.

Ich habe eine Klasse definiert und entsprechende Methoden hinzugefügt. Aber immer vor den defs kriege ich in der Python Shell einen Syntax-Fehler:

Code: Alles auswählen

class Poll(models.Model):
    question = models.CharField(maxlength=200)
    pub_date = models.DateTimeField('date published')

	def __str__(self):
		return self.question
	
	def was_published_today(self):
		return self.pub_date.date() == datetime.date.today()
Fehler:
>>> import mysite.polls.models.Poll
Traceback (most recent call last):
File "<console>", line 1, in ?
File "/Users/tim/Eclipse Workbench/mysite/../mysite/polls/models.py", line 9
def __str__(self):
^
SyntaxError: invalid syntax
>>>

Woran liegts? Was mache ich falsch?

Danke schonmal!

Gruß, Tim
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Nachdem ich beim Copypasten und Ausführen deines Codes keinen SyntaxError bekomme, tippe ich auf Fehler beim Einrücken. Hast du evtl. Tabs und Spaces gemischt?
timadlr
User
Beiträge: 4
Registriert: Samstag 7. Oktober 2006, 00:17

Ja hast recht. Vor den Variablen-Definitionen waren lauter Leerzeichen.
Jetzt leidet mein Ansehen für Python aber schon ein wenig: Ist das immer so problematisch mit den Tabs/Leerzeichen? Weil wenn man mal ne Datei von jemand anderem editieren will, dann muss man ja immer auf sowas achten, oder?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

timadlr hat geschrieben:Ist das immer so problematisch mit den Tabs/Leerzeichen? Weil wenn man mal ne Datei von jemand anderem editieren will, dann muss man ja immer auf sowas achten, oder?
Nein, eigentlich ist es nie problematisch, da alle ihre Editoren (Vim, Emacs, SciTE usw) auf einrücken mit 4 Spaces eingestellt haben, wie von PEP8 gefordert.
Zuletzt geändert von Leonidas am Samstag 7. Oktober 2006, 15:50, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

timadlr hat geschrieben:Ist das immer so problematisch mit den Tabs/Leerzeichen?
Ja, ist es. Guido hatte damals eine schlechte Wahl getroffen, Tabs und Spaces gleichzeitig in einer Zeile zuzulassen.

Das Problem ist, dass Tabs nicht immer gleich interpretiert werden. Einige Interpretieren es als 4 Spaces, andere springen an die nächste durch 4 Teilbare Position, etc.
Wenn du jetzt z.B. sowas hast (+ steht für Tab, _ für Leerzeichen)

Code: Alles auswählen

+++__Bla
__+++__Blubb
sind beide Zeilen gleich eingerückt, wenn ein Tab (wie es ja auch sein soll), an eine durch 4 (oder 8) teilbare Position springt.
Python (wenn ich mich recht erinnere) und einige andere Editoren interpretieren TAB aber z.B. einfach als 4 Spaces, und schon sind die beiden Zeilen nicht mehr gleich eingerückt.

Weil wenn man mal ne Datei von jemand anderem editieren will, dann muss man ja immer auf sowas achten, oder?
Genau deswegen sollte man Tabs nicht verwenden. Und wenn, dann nur ausschließlich.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Joghurt hat geschrieben:
timadlr hat geschrieben:Ist das immer so problematisch mit den Tabs/Leerzeichen?
Ja, ist es. Guido hatte damals eine schlechte Wahl getroffen, Tabs und Spaces gleichzeitig in einer Zeile zuzulassen.
Auch innerhalb einer Datei, IMHO.
Python (wenn ich mich recht erinnere) und einige andere Editoren interpretieren TAB aber z.B. einfach als 4 Spaces, und schon sind die beiden Zeilen nicht mehr gleich eingerückt.
Es sind 8 Spaces. (Man kann das aber lustigerweise durch Emacs- oder Vim-Cookies in 2.x noch ändern).
Antworten