Haben bestimmt schon einige gesehen, die Sammlung der Magischen Methoden:
http://www.siafoo.net/article/57
Wäre schön, wenn es das in der offiziellen Doku geben würde...
Python __Underscore__ Methods
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, ich wollte es eigentlich bookmarken, aber mein Bookmarking-Service ist wie so oft down.jens hat geschrieben:Haben bestimmt schon einige gesehen, die Sammlung der Magischen Methoden:
http://www.siafoo.net/article/57
Patch einsenden? Wenn ich am nächsten Sonntag zurückkomme sollte ich wirklich mich mal dranmachen, meine Dokumentationssachen vorranzubringen.jens hat geschrieben:Wäre schön, wenn es das in der offiziellen Doku geben würde...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich hätte zu den magischen Methoden auch mal eine Frage.
Ist es möglich, selbst so eine zu definieren?
Das habe ich mich heute Mittag bei irgend einem kleinen Script gefragt, leider weiß ich nicht mehr, was genau das war und mir fällt so auf die Schnelle auch kein sinnvolles Beispiel mehr ein.
Wahrscheinlich gibt es gar keine sinnvollen Beispiele
Edit: Sorry dass ich das Topic jetzt mal so abuse
Ist es möglich, selbst so eine zu definieren?
Das habe ich mich heute Mittag bei irgend einem kleinen Script gefragt, leider weiß ich nicht mehr, was genau das war und mir fällt so auf die Schnelle auch kein sinnvolles Beispiel mehr ein.
Wahrscheinlich gibt es gar keine sinnvollen Beispiele
Edit: Sorry dass ich das Topic jetzt mal so abuse
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Man kann die Methoden überschreiben, warum sollte man also keine selbst erstellen können?
Es wird nur - aus verständlichen Gründen - dringenst davon abgeraten.
Mir stellt sich da aber wirklich die Frage warum das denn unbedingt so aussehen muss wie die __*__ ? Haben ja schliesslich keinen Vorteil Oder lieg ich da falsch?
Es wird nur - aus verständlichen Gründen - dringenst davon abgeraten.
Mir stellt sich da aber wirklich die Frage warum das denn unbedingt so aussehen muss wie die __*__ ? Haben ja schliesslich keinen Vorteil Oder lieg ich da falsch?
Hmm ..cofi hat geschrieben:Man kann die Methoden überschreiben, warum sollte man also keine selbst erstellen können?
Es wird nur - aus verständlichen Gründen - dringenst davon abgeraten.
Mir stellt sich da aber wirklich die Frage warum das denn unbedingt so aussehen muss wie die __*__ ? Haben ja schliesslich keinen Vorteil Oder lieg ich da falsch?
1. Wie kann man die denn dann selbst erstellen?
Also einen eigenen Operator oder eine Funktion überladen?
Wenn ich jetzt zum Beispiel 2 Datentypen habe und ich will die einfach casten können, wie zum Beispiel mit str() oder int(), wie würde das dann gehen?
Also praktisch:
type(Datentyp1(Datentyp2)) = Datentyp1
Okay das Beispiel ist schlecht, da würde man wohl einfach Datentyp1.umwandeln(Datentyp2) benutzen, aber ein eigener Operator oder so eine Umwandlungsfunktion (wie eben int()) wäre das ja auch noch nicht ganz
2. Warum wird denn davon abgeraten?
3. Die Unterstriche werden wohl nur deshalb existieren, damit man 1. weiterhin Methodennamen wie add() benutzen kann und 2. man direkt sieht, dass das eine magische Methode ist.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Zu 1. Ich dachte jetzt eher an eigene Klassen. Für die Built-ins musst wohl etwas tiefer ran. Aber da hab ich recht wenig Ahnung. Evtl von den Built-ins erben und dann in der Klasse die Magie schreiben Aber dann sind wir wieder bei ner neuen Klasse.
Wie man die schreiben kann? Na als
Zu 2. Naja es sind zum Teil vom Interpreter erstellte Attribute bzw welche mit besonderer Bedeutung. Bei den Methodens sinds dann vor allem Hooks. Ich persönlich fänds unschön Aber ich denke da gibts noch tiefere Gründe.
Zu 3.1. Naa das glaub ich eher weniger da das nur nen Bennenungsproblem wäre, außerdem kann man schliesslich nen `_' anhängen - wie's PEP8 empfiehlt
Zu 3.2. Da liegt wohl eher der Hund begraben.
Wie man die schreiben kann? Na als
Code: Alles auswählen
def __foo__(self):
bar()
Zu 2. Naja es sind zum Teil vom Interpreter erstellte Attribute bzw welche mit besonderer Bedeutung. Bei den Methodens sinds dann vor allem Hooks. Ich persönlich fänds unschön Aber ich denke da gibts noch tiefere Gründe.
Zu 3.1. Naa das glaub ich eher weniger da das nur nen Bennenungsproblem wäre, außerdem kann man schliesslich nen `_' anhängen - wie's PEP8 empfiehlt
Zu 3.2. Da liegt wohl eher der Hund begraben.
Das hängt von deinen Datentypen ab. str und int sind übrigens keine speziellen Umwandlungsoperatoren sondern einfach nur die Klassenobjekte von int und str. Dementsprechend rufst du mit int() den Konstruktor auf.Karl hat geschrieben:Wenn ich jetzt zum Beispiel 2 Datentypen habe und ich will die einfach casten können, wie zum Beispiel mit str() oder int(), wie würde das dann gehen
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
http://docs.python.org/dev/reference/da ... thod-names kennst du aber schon, oder?jens hat geschrieben:Haben bestimmt schon einige gesehen, die Sammlung der Magischen Methoden:
http://www.siafoo.net/article/57
Wäre schön, wenn es das in der offiziellen Doku geben würde...
Methoden wie ``__reduce__`` findet man da zwar nicht, die gehören da aber auch nicht hin.