Aggiunta di una risposta perché Oskarbi di non è esplicito.
si utilizza self
quando:
- Definizione di un metodo di istanza. Viene passato automaticamente come primo parametro quando si chiama un metodo su un'istanza ed è l'istanza in cui è stato chiamato il metodo.
- Riferimento a un attributo di classe o istanza all'interno di un metodo di istanza. Usalo per chiamare un metodo o accedere a un nome (variabile) nell'istanza in cui è stato chiamato il metodo, all'interno di quel metodo.
È non lo fanno uso self
quando
- si chiama un metodo di istanza normalmente. Usando l'esempio di Oskarbi, se si fa
instance = MyClass()
, si chiama MyClass.my_method
come instance.my_method(some_var)
non come instance.my_method(self, some_var)
.
- Si fa riferimento a un attributo di classe da all'esterno di un metodo di istanza ma all'interno della definizione di classe.
- Sei all'interno di un staticmethod.
Queste cose da non fare sono solo esempi di quando non usare il sé. I dos sono quando si utilizza .
Così, in caso di dubbio, sempre andare con esso? –
Sì! È obbligatorio – lc2817
@DarkTemplar Si usa sempre self quando si definisce _defining_ un metodo di istanza o si chiama uno o si fa riferimento a una variabile di istanza all'interno di un metodo di istanza, non altrimenti. Non so cosa intendesse con "anytime" ma non è vero come preso alla lettera. – agf