ich hab in den letzten 3 Tagen mal versucht einen ganz simplen Chat zu schreiben

Ich hoffe ein Profi kann sich das ganze mal ansehn und mir sagen was ich falsch mache bzw. man besser machen kann.
Danke euch
Download: http://drop.io/thepychat
Code: Alles auswählen
>>> from functools import partial
>>> from operator import eq
>>> ip, name, port = '127.0.0.1', '', '80'
>>> is_empty_string = partial(eq, '')
>>> any(is_empty_string(entry) for entry in (ip, name, port))
True
Ja. Das die Module nach Klassen aufgeteilt sind macht in meinen Augen wenig Sinn, eine thematische Ordnung fände ich besser. Auch client.py und clients.py finde ich - verwirrend, zudem clients.py eine ziemlich sinnlose Klasse ist (Python hat Properties - keine Getter und Setter nötig, die zudem nichts tun). Ich würde auch viel weniger String-Konkatenation nutzen, mehr String-Formatting um Daten anzupassen. Da spart man sich auch das wrappen von Kram in ``str()`` und es ist klarer was dargestellt werden soll. Achja, ``input`` ist eine eingebaute Funktion, die überschreibst du an irgendeiner Stelle - sollte man besser nicht machen.weißned hat geschrieben:Hat sonst noch jemand was anzumerken=?
Du kannst den Hash in der URL durch "tip" ersetzen, dann zeigt es auf die aktuellste Revision.weißned hat geschrieben:Wenn ich eine Revision anklicke sehe ich die ja auch, hat jemand ne Ahnung wie man das machen kann den Source Code anzuzeigen ohne eine bestimmte Revision anzuklicken müssen?
Ja, denn Python ist ein Lisp-1^W^W eine Sprache mit nur einem Namespace indem sowohl Funktionen als auch sonstige Namen sind. Variablen hat Python an sich nicht.weißned hat geschrieben:Wegen dem input, überschreibe ich die input Funktion auch wenn ich eine Varible input habe?
Okay, kann man das auch machen wenn man so auf den Source Button klickt oder muss immer eine Revision ausgewählt sein?Leonidas hat geschrieben:Du kannst den Hash in der URL durch "tip" ersetzen, dann zeigt es auf die aktuellste Revision.weißned hat geschrieben:Wenn ich eine Revision anklicke sehe ich die ja auch, hat jemand ne Ahnung wie man das machen kann den Source Code anzuzeigen ohne eine bestimmte Revision anzuklicken müssen?
Mein Gott …derdon hat geschrieben:Code: Alles auswählen
>>> from functools import partial >>> from operator import eq >>> ip, name, port = '127.0.0.1', '', '80' >>> is_empty_string = partial(eq, '') >>> any(is_empty_string(entry) for entry in (ip, name, port)) True
Code: Alles auswählen
any(not entry for entry in (ip, name, port))
Ja. Du kannst ja auch eigene Exceptions definieren.weißned hat geschrieben:Das mit den leeren Strings stimmt schon ist ein wenig doof, aber wir könnt ich es denn anders lösen? Soll ich dann selber eine Exception auslösen?
Code: Alles auswählen
try:
c.send(message)
except Exception as ex:
raise MyError('error sending message!\nDetails: %s\n%s' %(type(ex), ex)
cofi hat geschrieben:In Ordnung ist das aber nur, wenn du den Typ nicht genauer weisst (und selbst dann ist `except BaseException` zu bevorzugen).
... oder wenn ein Syntaxfehler im Code ist oder wenn der User das Programm beenden möchte ...weißned hat geschrieben:Naja ich möchte aber das jede beliebige Exception abgefangen wird, also zum Beispiel auch wenn man für Port keine Zahl eingegeben hat.