I metodi sono funzioni che vengono chiamate usando la notazione attributo. Ne esistono di due tipi: metodi built-in (come append() su liste) e metodi di istanze di classe. I metodi bult-in vengono descritti con i tipi che li supportano.
L'implementazione aggiunge due attributi speciali in sola lettura per
i metodi delle istanze di classe: m.im_self
è l'oggetto
sul quale il metodo opera, e m.im_func
è la funzione che
implementa il metodo. La chiamata m(arg-1,
arg-2, ..., arg-n)
è completamente
equivalente alla chiamata m.im_func(m.im_self,
arg-1, arg-2, ..., arg-n)
.
I metodi delle istanze di classe sono sia legati che
slegati, a seconda che il metodo attraverso con il quale vi si
accede sia rispettivamente un'istanza o una classe. Quando un metodo
è slegato, il suo attributo im_self
sarà None
e se
chiamato, un esplicito oggetto self
dovrà essere passato come
primo argomento. In questo caso, self
deve essere una istanza
del metodo di classe slegato (o una sotto classe di quella classe),
altrimenti verrà sollevata un'eccezione di tipo TypeError
.
Come gli oggetti funzione, gli oggetti metodi accettano gli attributi
arbitrari che possono venire loro forniti.
Tuttavia, poiché i metodi degli attributi vengono attualmente
immagazzinati nell'oggetto funzione sottostante (meth.im_func
),
impostare i metodi degli attributi, per metodi sia legati che slegati,
non è consentito. Tentare di impostare un metodo per un attributo
solleverà un'eccezione TypeError
.
Per impostare i metodi degli attributi, è necessario assegnarli
esplicitamente nell'oggetto funzione sottostante:
class C: def method(self): pass c = C() c.method.im_func.whoami = 'my name is c'
Vedete il Manuale di riferimento di Python per ulteriori informazioni.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.