Self représente l'instance de la classe. En utilisant le self, nous pouvons accéder aux attributs et méthodes de la classe dans Python . Il lie les attributs avec les arguments donnés. La raison pour laquelle vous devez vous utiliser. C'est parce que Python n'utilise pas la syntaxe @ pour faire référence aux attributs d'instance. Python a décidé de faire des méthodes de manière à ce que l'instance à laquelle la méthode appartient soit transmise automatiquement, mais pas reçue automatiquement : le premier paramètre des méthodes est l'instance à laquelle la méthode est appelée.
A quoi sert self en Python ?
Lorsque vous travaillez avec des classes en Python, le terme self fait référence à l'instance de la classe actuellement utilisée. Il est d'usage d'utiliser self comme premier paramètre dans les méthodes d'instance d'une classe. Chaque fois que vous appelez une méthode d'un objet créé à partir d'un classe , l'objet est automatiquement passé comme premier argument à l'aide du paramètre self. Cela vous permet de modifier les propriétés de l'objet et d'exécuter des tâches propres à cette instance particulière.
Python3
class> mynumber:> >def> __init__(>self>, value):> >self>.value>=> value> > >def> print_value(>self>):> >print>(>self>.value)> obj1>=> mynumber(>17>)> obj1.print_value()> |
>
>
Sortir:
17>
Auto-constructeur de classe Python
Lorsque vous travaillez avec des classes, il est important de comprendre qu'en Python, un constructeur de classe est une méthode spéciale nommée __chaud__ qui est appelé lorsque vous créez une instance (objet) d'une classe. Cette méthode est utilisée pour initialiser les attributs de l'objet. Gardez à l'esprit que le paramètre self dans le constructeur fait référence à l'instance en cours de création et vous permet d'accéder et de définir ses attributs. En suivant ces directives, vous pouvez créer des classes puissantes et efficaces en 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)> |
>
>
Sortir:
Maths Science>
Le soi en Python est-il un mot-clé ?
Non, ' soi ' n'est pas un mot-clé en Python. Self>est simplement un nom de paramètre utilisé dans les méthodes d'instance pour faire référence à l'instance elle-même.
755 chmods
De manière plus claire, vous pouvez dire que SELF a la caractéristique suivante :
Soi : pointeur vers l'objet actuel
Le soi pointe toujours vers l’objet actuel. Lorsque vous créez une instance d'une classe, vous créez essentiellement un objet avec son propre ensemble d'attributs et de méthodes.
Python3
class> check:> >def> __init__(>self>):> >print>(>'Address of self = '>,>id>(>self>))> obj>=> check()> print>(>'Address of class object = '>,>id>(obj))> |
>
>
Sortir:
Address of self = 140273244381008 Address of class object = 140273244381008>
Exemple : création d'une classe avec des attributs et des méthodes
Ce code définit une classe Pythoncar>représentant des voitures avec les attributs « modèle » et « couleur ». Le__init__>Le constructeur initialise ces attributs pour chaque instance. Leshow>La méthode affiche le modèle et la couleur, tandis que l'accès direct aux attributs et les appels de méthode démontrent la récupération de données spécifiques à l'instance.
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)> |
>
>
Sortir:
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>
Soi dans les constructeurs et les méthodes
Le soi est le premier argument à passer Constructeur et Instance Method.Self doivent être fournis en tant que premier paramètre à la méthode et au constructeur Instance. Si vous ne le fournissez pas, cela provoquera une erreur.
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> |
>
>
Soi : convention, pas mot-clé
Le soi est une convention et non un Mot-clé Python . Self est un paramètre dans la méthode d'instance et l'utilisateur peut utiliser un autre nom de paramètre à la place. Mais il est conseillé d'utiliser self car cela augmente la lisibilité du code, et c'est aussi une bonne pratique de programmation.
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()> |
>
>
Sortir:
we have used another parameter name in place of self>