2.3.10.4 Metodi

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.