Gibt es eine Regel dafür?
Klares
Ja
Wenn das Objekt verändert wird, gibt die Methode
None zurück.
Ob ein Objekt verändert wird (oder werden kann) steht (hoffentlich) in der Doku (z.B. unicode/int/complex/tuple etc. sind "immutable", die
kann man nicht verändern).
Und man kann oft aus dem Namen schließen, ob was verändert wird (append=>"anhängen", aber sorted=>"sortiert"
nicht "sortier!").
Dein Beispiel mit "__add__" ist etwas irreführend, weil man "__add__" nie direkt benutzt, man nimmt "+":
Code: Alles auswählen
Python 2.5.1 Stackless 3.1b3 060516 #...
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [1,2,3]
>>> a + [4,5]
[1, 2, 3, 4, 5]
>>> a
[1, 2, 3]
>>> a + 4
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "int") to list
Wenn sich da "a" verändern würde, wäre das etwas unerwartet(evtl. suchst du ja "+=" also "__iadd__").
hth, Jörg
edit: typos, überall typos
Wir haben schon 10% vom 21. Jahrhundert hinter uns!