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.