logo

self nella classe Python

Self rappresenta l'istanza della classe. Utilizzando self possiamo accedere agli attributi e ai metodi della classe in Pitone . Lega gli attributi con gli argomenti forniti. Il motivo per cui devi usare self. è perché Python non usa la sintassi @ per fare riferimento agli attributi dell'istanza. Pitone ha deciso di creare metodi in modo tale che l'istanza a cui appartiene il metodo venga passata automaticamente, ma non ricevuta automaticamente: il primo parametro dei metodi è l'istanza su cui viene chiamato il metodo.

Qual è l'uso di self in Python?

Quando si lavora con le classi in Python, il termine self si riferisce all'istanza della classe attualmente utilizzata. È consuetudine utilizzare self come primo parametro nei metodi di istanza di una classe. Ogni volta che chiami un metodo di un oggetto creato da a classe , l'oggetto viene passato automaticamente come primo argomento utilizzando il parametro self. Ciò consente di modificare le proprietà dell'oggetto ed eseguire attività uniche per quella particolare istanza.



Python3






class> mynumber:> >def> __init__(>self>, value):> >self>.value>=> value> > >def> print_value(>self>):> >print>(>self>.value)> obj1>=> mynumber(>17>)> obj1.print_value()>



>

sottostringa in Java

>

Produzione:

17>

Autocostruttore di classi Python

Quando si lavora con le classi, è importante capire che in Python, un costruttore di classi è un metodo speciale denominato __caldo__ che viene chiamato quando crei un'istanza (oggetto) di una classe. Questo metodo viene utilizzato per inizializzare gli attributi dell'oggetto. Tieni presente che il parametro self nel costruttore si riferisce all'istanza in fase di creazione e ti consente di accedere e impostare i suoi attributi. Seguendo queste linee guida, puoi creare classi potenti ed efficienti in Python.

Python3




class> Subject:> >def> __init__(>self>, attr1, attr2):> >self>.attr1>=> attr1> >self>.attr2>=> attr2> obj>=> Subject(>'Maths'>,>'Science'>)> print>(obj.attr1)> print>(obj.attr2)>

>

>

Produzione:

Maths Science>

Self in Python è una parola chiave?

NO, ' se stesso ' non è un parola chiave in Pitone. Self>è solo un nome di parametro utilizzato nei metodi di istanza per fare riferimento all'istanza stessa.

In modo più chiaro puoi dire che il SELF ha la seguente caratteristica:

Self: puntatore all'oggetto corrente

Il sé punta sempre all'Oggetto Corrente. Quando crei un'istanza di una classe, stai essenzialmente creando un oggetto con il proprio set di attributi e metodi.

Python3




class> check:> >def> __init__(>self>):> >print>(>'Address of self = '>,>id>(>self>))> obj>=> check()> print>(>'Address of class object = '>,>id>(obj))>

>

>

Produzione:

Address of self = 140273244381008 Address of class object = 140273244381008>

Esempio: creazione di una classe con attributi e metodi

Questo codice definisce una classe Pythoncar>che rappresentano auto con attributi 'modello' e 'colore'. IL__init__>il costruttore inizializza questi attributi per ogni istanza. ILshow>il metodo visualizza modello e colore, mentre l'accesso diretto agli attributi e le chiamate al metodo dimostrano il recupero dei dati specifici dell'istanza.

Python3




class> car():> > ># init method or constructor> >def> __init__(>self>, model, color):> >self>.model>=> model> >self>.color>=> color> > >def> show(>self>):> >print>(>'Model is'>,>self>.model )> >print>(>'color is'>,>self>.color )> > # both objects have different self which contain their attributes> audi>=> car(>'audi a4'>,>'blue'>)> ferrari>=> car(>'ferrari 488'>,>'green'>)> audi.show()># same output as car.show(audi)> ferrari.show()># same output as car.show(ferrari)> print>(>'Model for audi is '>,audi.model)> print>(>'Colour for ferrari is '>,ferrari.color)>

>

>

Produzione:

confronto di stringhe java
Model is audi a4 color is blue Model is ferrari 488 color is green Model for audi is audi a4 Colour for ferrari is green>

Il sé nei costruttori e nei metodi

Self è il primo argomento da passare Costruttore e Instance Method.Self deve essere fornito come primo parametro al metodo e al costruttore Instance. Se non lo fornisci, causerà un errore.

Python3




# Self is always required as the first argument> class> check:> >def> __init__():> >print>(>'This is Constructor'>)> object> => check()> print>(>'Worked fine'>)> # Following Error is produced if Self is not passed as an argument> Traceback (most recent call last):> >File> '/home/c736b5fad311dd1eb3cd2e280260e7dd.py'>, line>6>,>in> > >object> => check()> TypeError: __init__() takes>0> positional arguments but>1> was given>

>

>

Sé: convenzione, non parola chiave

Il sé è una convenzione e non un Parola chiave Python . Self è un parametro in Metodo istanza e l'utente può utilizzare un altro nome di parametro al suo posto. Ma è consigliabile utilizzare self perché aumenta la leggibilità del codice ed è anche una buona pratica di programmazione.

Python3




class> this_is_class:> >def> __init__(in_place_of_self):> >print>(>'we have used another '> >'parameter name in place of self'>)> > object> => this_is_class()>

>

>

Produzione:

we have used another parameter name in place of self>