Ich hab so ein kleiner Problem, ich schreibe grad an einer kleien Pinnwand, aber da will was nicht wirklich funktionieren und ich versteh nicht warum, vieleicht könntet ihr mal drauf schauen.
http://paste.pocoo.org/show/128481/
das Problem ist bei getNotice, der sagt mir da immer TypeError: unbound method toattch() must be called with Pinboard instance as first argument (got str instance instead)
Pinnwand
Die Klasse `Pinboard` muss halt instanziert werden. In deine `__init__()` von `Desktop` sollte daher ein:
(die Klammern fehlen bei dir)
Für Probleme dieser Art würde man aber eigentlich eher das Forum für `Allgemeine Fragen` nutzen. Hier kommen in der Regel fertige Sachen rein, die man der Community präsentieren und dazu etwas Rückmeldung erhalten will.
Code: Alles auswählen
self.__pw = Pinboard()
Für Probleme dieser Art würde man aber eigentlich eher das Forum für `Allgemeine Fragen` nutzen. Hier kommen in der Regel fertige Sachen rein, die man der Community präsentieren und dazu etwas Rückmeldung erhalten will.
Zuletzt geändert von snafu am Dienstag 14. Juli 2009, 13:15, insgesamt 1-mal geändert.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Dann tu doch auch was die Fehlermeldung sagt.
Hint: Schau mal in Zeile 45.
Und wenn du gleich dabei bist: Veraendere ``__`` zu ``_``. Gleiches gilt fuer den oberen Teil. Du missbrauchst hier Features, die fuer anderes gedacht sind und auch nicht das Ziel der Kapselung erfuellen koennen: In Python gibt es kein ``private``!
Edit: Boeser snafu!
Hint: Schau mal in Zeile 45.
Und wenn du gleich dabei bist: Veraendere ``__`` zu ``_``. Gleiches gilt fuer den oberen Teil. Du missbrauchst hier Features, die fuer anderes gedacht sind und auch nicht das Ziel der Kapselung erfuellen koennen: In Python gibt es kein ``private``!
Edit: Boeser snafu!
Wenn das fertig ist, kannst du's ja nochmal hier reinstellen. Ich glaube, da gibt es noch die ein oder andere weitere Sache zu optimieren...cz3kit hat geschrieben:Haben wir ma wieder was gelernt
Also so in etwa soll es aussehen, ich wüsste jetzt nicht was ich da noch großartig machen soll
http://paste.pocoo.org/show/128498/
http://paste.pocoo.org/show/128498/
Haben wir mal wieder was gelernt :P
getPriority wandelt die Memo mehrfach in uppercase und geht mehrfach durch die ganze memo um worte zu zählen. Besser wäre eine Regex verwenden und mit ignorecase suchen lassen. Das geht nur einmal durch die Memo und spart sich das kopieren nach uppercase.cz3kit hat geschrieben:Also so in etwa soll es aussehen, ich wüsste jetzt nicht was ich da noch großartig machen soll
http://paste.pocoo.org/show/128498/
toattach sortiert jedesmal die Liste neu, obwohl nur ein einziges element nicht sortiert ist. Besser wäre es das neue memo direkt dort einzufügen wo es hingehört.
delete wird üblicherweise pop genannt.
Der if ... elif ... Block in Desktop könnte durch ein Dictionary besser gelöst werden:
Code: Alles auswählen
{ 'N': getNotice}[key]()
Edit: und __str__ muss für jede Zeile den bisherigen String kopieren um den neuen dranzuhängen. Besser wäre join.
Edit (Leonidas): Thread verschoben.
http://www.felix-benner.com
Hi
was ich nicht verstehe ist was du mit Regex meinstgetPriority wandelt die Memo mehrfach in uppercase und geht mehrfach durch die ganze memo um worte zu zählen. Besser wäre eine Regex verwenden und mit ignorecase suchen lassen. Das geht nur einmal durch die Memo und spart sich das kopieren nach uppercase.
wird das immer pop genannt, oder wie schauts das aus?delete wird üblicherweise pop genannt.
aber sollte ich das dict dan gleich am anfang der klasse definieren oder wie sollte das aussehen?Der if ... elif ... Block in Desktop könnte durch ein Dictionary besser gelöst werden:
Docstring hab ich noch netUnd die Kommentare sollten wohl Docstrings sein.
Haben wir mal wieder was gelernt :P
- mkesper
- User
- Beiträge: 919
- Registriert: Montag 20. November 2006, 15:48
- Wohnort: formerly known as mkallas
- Kontaktdaten:
Gemeint sind regular expressions. Sie sind ziemlich mächtig, jedoch alles andere als einfach zu lesen, also nicht unbedingt pythonisch.cz3kit hat geschrieben: was ich nicht verstehe ist was du mit Regex meinst
cz3kit hat geschrieben:wird das immer pop genannt, oder wie schauts das aus?delete wird üblicherweise pop genannt.
Code: Alles auswählen
notice = self.__note[0][1]
del self.__note[0]
Code: Alles auswählen
notice = self.__note.pop([0])[1]
Sie machen Python-Programme erst schön.cz3kit hat geschrieben:Docstring hab ich noch net
Oke dan lass ich die Regey ma weg, wenn es so schwer zu lesen ist, kommt dan später ma dran
würde das ganze dan so aussehen? Und wenn ich das richtig verstehe wird dan auch kein return mehr benötigt
oke jetzt versteh ich was mit pop gemeint ist, aber wenn ich es ausführe sag er mir Type Error: integer is requiredCode: (Python)
notice = self.__note[0][1]
del self.__note[0]
würde man eher schreiben als:
Code: (Python)
notice = self.__note.pop([0])[1]
Siehe Mutable Sequence Types.
Code: Alles auswählen
def delete(self):
notice = ""
notice = self.__note.pop([0])[1]
Haben wir mal wieder was gelernt :P
- mkesper
- User
- Beiträge: 919
- Registriert: Montag 20. November 2006, 15:48
- Wohnort: formerly known as mkallas
- Kontaktdaten:
Das ist überflüssig. Und das return entfällt, genau. Dafür hatte ich einen Fehler eingebaut, es heißt: Sorry.
Wobei die ganzen doppelten Unterstriche bitte durch einfache ersetzt werden sollten.
Code: Alles auswählen
notice = ""
Code: Alles auswählen
notice = self.__note.pop(0)[1]
Wobei die ganzen doppelten Unterstriche bitte durch einfache ersetzt werden sollten.
Ahso oke verstehe, aber wenn ich jetzt
mache, dan bekomme ich None, ich wollte das aber der Wert aus der Liste notice zugewiesen wird und dann später nochmal ausgegeben.
So sieht es jetzt grade aus
Also mein Informatiklehrer einte wir sollen erst mal zwei Unterstriche machen. Kannst kurz sagen warum einer besser ist?
Code: Alles auswählen
print Pinboard.delete()
So sieht es jetzt grade aus
Code: Alles auswählen
def delete(self):
notice = self.__note.pop(0)[1]
Also mein Informatiklehrer einte wir sollen erst mal zwei Unterstriche machen. Kannst kurz sagen warum einer besser ist?
Haben wir mal wieder was gelernt :P
Zwei Unterstriche dienen zur Vermeidung von Namenskonflikten bei Mehrfachvererbung. Private Attribute werden mit einem Unterstrich markiert.
Nicht nur Mehrfachvererbung, bei Vererbung generell.lunar hat geschrieben:Zwei Unterstriche dienen zur Vermeidung von Namenskonflikten bei Mehrfachvererbung. Private Attribute werden mit einem Unterstrich markiert.
@cz3kit: Welches Buch hast du?