Hallo Community.
Ich habe ein kleines Skript geschrieben und wollte fragen ob es gut lesbar ist bzw. die PEP8 Stilrichtlinien befolgt.
http://paste.pocoo.org/show/239406/
Nett wären Tips und Sachen die ich verbessern könnte.
Gruß, xpilz
Beispiel Skript - PEP8 gemäß?
- xpilz
- User
- Beiträge: 76
- Registriert: Sonntag 11. April 2010, 12:46
- Wohnort: Deutschland
- Kontaktdaten:
Mein Python-Blog.
Sieht prinzipiell gut aus.
Ich würde die () bei der Klassendefinition weglassen und auch die \ bei den prints. Ich halte die Anforderung, sich auf 80 Zeichen pro Zeile zu beschränken, nicht mehr für zeitgemäß. 120 geht mindestens und in dem Browserfenster, was nur über meinen halben Bildschirm geht, würde locker alles in eine Zeile passen.
In Zeile 20 gehören keine Klammern um den return-Befehl (hast du in 13 und 15 ja auch nicht).
Ich würde statt not == lieber != benutzen, aber das ist persönlicher Geschmack und hat nichts mit PEP8 zu tun.
Hoffentlich nicht strittig ist, dass die Klasse nicht wirklich sinnvoll ist.
Stefan
Ich würde die () bei der Klassendefinition weglassen und auch die \ bei den prints. Ich halte die Anforderung, sich auf 80 Zeichen pro Zeile zu beschränken, nicht mehr für zeitgemäß. 120 geht mindestens und in dem Browserfenster, was nur über meinen halben Bildschirm geht, würde locker alles in eine Zeile passen.
In Zeile 20 gehören keine Klammern um den return-Befehl (hast du in 13 und 15 ja auch nicht).
Ich würde statt not == lieber != benutzen, aber das ist persönlicher Geschmack und hat nichts mit PEP8 zu tun.
Hoffentlich nicht strittig ist, dass die Klasse nicht wirklich sinnvoll ist.
Stefan
- xpilz
- User
- Beiträge: 76
- Registriert: Sonntag 11. April 2010, 12:46
- Wohnort: Deutschland
- Kontaktdaten:
Danke. Das die Klammern bei einer Klassendefinition weggelassen werden können wusste ich noch nicht.
Naja, das mit der Zeilenlänge ist für mich besser, weil ich atm einiges in der CLI schreibe.
Naja, das mit der Zeilenlänge ist für mich besser, weil ich atm einiges in der CLI schreibe.
Stimmt, ich hatte die Klammern um den return Befehl in Zeile 13 und 15 kurz vor dem Post weggemacht und es dann bei 20 vergessen.sma hat geschrieben:In Zeile 20 gehören keine Klammern um den return-Befehl (hast du in 13 und 15 ja auch nicht).
Ja, ist ja auch nur ein Beispiel und mir ist nichts gescheites eingefallen. :Ksma hat geschrieben:Hoffentlich nicht strittig ist, dass die Klasse nicht wirklich sinnvoll ist.
Mein Python-Blog.
Mein Terminal hat 130 Zeichen pro Zeile und davon gehen zwei nebeneinander auf den Bildschirm. Und dabei nutze ich schon eine größere Schrift, da die Augen nicht mehr so wollen wie früher. Auch auf dem Notebook hätte mein Terminal deutlich mehr als 80 Zeichen pro Zeile.xpilz hat geschrieben:Naja, das mit der Zeilenlänge ist für mich besser, weil ich atm einiges in der CLI schreibe.
Stefan
noch besser fände ich es wenn du folgendes schreibst:sma hat geschrieben:Ich würde statt not == lieber != benutzen, aber das ist persönlicher Geschmack und hat nichts mit PEP8 zu tun.
Code: Alles auswählen
def result(self):
if self.radius > 0:
return pi * self.radius ** 2
elif self.diameter > 0:
return pi / 4 * self.diameter ** 2
else:
return 0
- xpilz
- User
- Beiträge: 76
- Registriert: Sonntag 11. April 2010, 12:46
- Wohnort: Deutschland
- Kontaktdaten:
@DaMutz: Dein Vorschlag ist gut. Danke, dafür.
@sma: Entschuldigung. Mit CLI meine ich die Textkonsole.
@sma: Entschuldigung. Mit CLI meine ich die Textkonsole.
Mein Python-Blog.
@sma: Ich weiß ja nicht, was Du für ein Notebook hast oder welche Schriftgrößen Du nutzt Auf meinem 15.4'' Bildschirm ist jedenfalls bei etwas mehr als 80 Zeichen Schluss, wenn ich ein geteiltes Editor-Fenster offen habe. An ein Netbook mit 12'' mag ich gar nicht erst denken ...
Insofern finde ich nicht, dass 80 Zeichen nicht mehr zeitgemäß sind. Es gibt immer noch (oder schon wieder?) genügend Geräte, die bei 80 Zeichen bereits an ihre Grenzen stoßen. Wenn man nur alleine Quelltext schreibt, oder nur auf den großen Workstations in der Firma mit zwei 24''-Bildschirmen, dann ist das natürlich egal. Aber wenn man im Team mit mehreren zusammenarbeitet, finde ich es höflich, sich an eine Obergrenze von 80 Zeichen zu halten, da das in etwa das ist, was jedes Gerät noch relativ problemlos anzeigen kann.
Außerdem ist Python ja nicht Java: Zeilen werden selten so lang, und falls doch, lassen sie sich meist problemlos umbrechen.
Insofern finde ich nicht, dass 80 Zeichen nicht mehr zeitgemäß sind. Es gibt immer noch (oder schon wieder?) genügend Geräte, die bei 80 Zeichen bereits an ihre Grenzen stoßen. Wenn man nur alleine Quelltext schreibt, oder nur auf den großen Workstations in der Firma mit zwei 24''-Bildschirmen, dann ist das natürlich egal. Aber wenn man im Team mit mehreren zusammenarbeitet, finde ich es höflich, sich an eine Obergrenze von 80 Zeichen zu halten, da das in etwa das ist, was jedes Gerät noch relativ problemlos anzeigen kann.
Außerdem ist Python ja nicht Java: Zeilen werden selten so lang, und falls doch, lassen sie sich meist problemlos umbrechen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Geht mir ganz genauso. Und ohne geteiltes Edtior-Fenster fang ich das programmieren gar nicht mehr anlunar hat geschrieben:@sma: Ich weiß ja nicht, was Du für ein Notebook hast oder welche Schriftgrößen Du nutzt Auf meinem 15.4'' Bildschirm ist jedenfalls bei etwas mehr als 80 Zeichen Schluss, wenn ich ein geteiltes Editor-Fenster offen habe. An ein Netbook mit 12'' mag ich gar nicht erst denken ...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- xpilz
- User
- Beiträge: 76
- Registriert: Sonntag 11. April 2010, 12:46
- Wohnort: Deutschland
- Kontaktdaten:
Danke für die Hilfe. Jetzt weiß ich wenigstens das ich, wenn auch noch mit ein wenig Mühe, meine Skripte leserlich schreiben kann. Aber ich hoffe das geht mit der Zeit in "Fleisch und Blut" über.
Mein Python-Blog.
bin da irgendwie nicht ganz so Multitasking fähig...Leonidas hat geschrieben:Geht mir ganz genauso. Und ohne geteiltes Edtior-Fenster fang ich das programmieren gar nicht mehr anlunar hat geschrieben:@sma: Ich weiß ja nicht, was Du für ein Notebook hast oder welche Schriftgrößen Du nutzt Auf meinem 15.4'' Bildschirm ist jedenfalls bei etwas mehr als 80 Zeichen Schluss, wenn ich ein geteiltes Editor-Fenster offen habe. An ein Netbook mit 12'' mag ich gar nicht erst denken ...
Ich würde mich beim Programmieren selbst nicht zu sehr verkünsteln und jedes Detail (vor allem die 80 Zeichen Grenze) sofort PEP8 konform schreiben - das ist imho ineffektiv und man braucht für die gleiche Arbeit mehr Zeit. Danach nochmal kurz drüber gehen ist da meiner Meinung nach besser. Wie geht es euch da?Aber ich hoffe das geht mit der Zeit in "Fleisch und Blut" über.
@DasIch: Ich denke, das bezog sich jetzt eher auf PEP 8 im Allgemeinen, und nicht speziell auf die Zeilenlänge. Es gibt ja andere Konventionen, bei deren Verletzung der Editor nicht sofort einspringt (z.B. die Anzahl der Leerzeichen zwischen Blöcken oder um Operatoren oder die Formatierung von Docstrings).
Gerade was die Formatierung des Quelltexts angeht, sollte PEP 8 meines Erachtens auch nicht überbewertet werden. Ob man nun eine, zwei oder vielleicht auch mal drei Leerzeilen zwischen Funktionen auf Modulebene nutzt, oder die erste Zeile des Docstrings auf die selbe Zeile wie die drei Anführungszeichen schreibt oder in die nächste, ist irgendwo auch herzlich egal.
Wichtig sind vor allem die Konventionen zur Namensgebung, die man imho beachten sollte, aber eben auch nicht sklavisch, sondern so, dass der Quelltext gut lesbar ist.
Am Anfang hat man sowieso alle Hände voll zu tun, vernünftig funktionierenden Quelltext zu produzieren. PEP 8 ist daher eher Kür denn Pflicht.
Gerade was die Formatierung des Quelltexts angeht, sollte PEP 8 meines Erachtens auch nicht überbewertet werden. Ob man nun eine, zwei oder vielleicht auch mal drei Leerzeilen zwischen Funktionen auf Modulebene nutzt, oder die erste Zeile des Docstrings auf die selbe Zeile wie die drei Anführungszeichen schreibt oder in die nächste, ist irgendwo auch herzlich egal.
Wichtig sind vor allem die Konventionen zur Namensgebung, die man imho beachten sollte, aber eben auch nicht sklavisch, sondern so, dass der Quelltext gut lesbar ist.
Am Anfang hat man sowieso alle Hände voll zu tun, vernünftig funktionierenden Quelltext zu produzieren. PEP 8 ist daher eher Kür denn Pflicht.
Mir ist wie sma auch aufgefallen, daß Dein OO Design komisch ist. Im Normalfall würde man eine Klasse Circle definieren. Da Umfang und Fläche vom Radius abhängen, kann man das gleich in __init__ mit berechnen.
Ich hatte nochmal kurz nachgedacht wie ich es machen würde. Wahrscheinlich so:
Code: Alles auswählen
from math import pi
class Circle(object):
def __init__(self,r):
self.r = r
@property
def a(self):
return pi*self.r**2
@property
def d(self):
return pi*self.r*2
x = Circle(10)
print x.r
print x.a
print x.d
- xpilz
- User
- Beiträge: 76
- Registriert: Sonntag 11. April 2010, 12:46
- Wohnort: Deutschland
- Kontaktdaten:
Ja das sieht besser aus, lesbarer ist Deine Variante auch noch. Ich glaube ich habe sowieso einen kleinen Denkfehler in meine Klasse gebracht. Eigentlich wollte ich den Flächeninhalt und den Umfang berechnen. Ist aber jetzt auch egal..
Und danke für den Vorschlag.
xpilz
Und danke für den Vorschlag.
xpilz
Mein Python-Blog.