logo

self у класі Python

Self представляє екземпляр класу. Використовуючи self, ми можемо отримати доступ до атрибутів і методів класу в Python . Він пов’язує атрибути з заданими аргументами. Причина, по якій ви повинні використовувати себе. тому, що Python не використовує синтаксис @ для посилання на атрибути екземпляра. Python вирішив створювати методи таким чином, щоб екземпляр, якому належить метод, передавався автоматично, але не отримувався автоматично: перший параметр методів — це екземпляр, до якого метод викликається.

Яке використання self в Python?

Під час роботи з класами в Python термін self стосується екземпляра класу, який зараз використовується. Зазвичай використовують self як перший параметр у методах екземпляра класу. Щоразу, коли ви викликаєте метод об’єкта, створеного з a клас , об’єкт автоматично передається як перший аргумент за допомогою параметра self. Це дає вам змогу змінювати властивості об’єкта та виконувати завдання, унікальні для цього конкретного екземпляра.



Python3






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



>

>

Вихід:

17>

Самоконструктор класу Python

Працюючи з класами, важливо розуміти, що в Python конструктор класів — це спеціальний метод під назвою __гарячий__ який викликається, коли ви створюєте екземпляр (об’єкт) класу. Цей метод використовується для ініціалізації атрибутів об'єкта. Майте на увазі, що параметр self у конструкторі посилається на екземпляр, який створюється, і дозволяє отримати доступ до його атрибутів і встановити їх. Дотримуючись цих вказівок, ви можете створювати потужні та ефективні класи на 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)>

>

>

Вихід:

Maths Science>

Чи є self у Python ключовим словом?

Немає, 'я' не є ключове слово в Python. Сelf>це лише назва параметра, що використовується в методах екземпляра для посилання на сам екземпляр.

У більш зрозумілий спосіб ви можете сказати, що SELF має такі характеристики-

Self: покажчик на поточний об’єкт

Я завжди вказує на поточний об'єкт. Коли ви створюєте екземпляр класу, ви, по суті, створюєте об’єкт із власним набором атрибутів і методів.

Python3




частково похідний латекс
class> check:> >def> __init__(>self>):> >print>(>'Address of self = '>,>id>(>self>))> obj>=> check()> print>(>'Address of class object = '>,>id>(obj))>

>

>

в порядку

Вихід:

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

Приклад: Створення класу з атрибутами та методами

Цей код визначає клас Pythoncar>представлення автомобілів з атрибутами «модель» і «колір». The__init__>конструктор ініціалізує ці атрибути для кожного екземпляра. Theshow>метод відображає модель і колір, тоді як прямий доступ до атрибутів і виклики методів демонструють отримання даних для конкретного екземпляра.

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)>

>

>

Вихід:

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>

Self у конструкторах і методах

Self є першим аргументом, який передається Конструктор і Instance Method.Self необхідно надати як перший параметр для методу та конструктора Instance. Якщо ви не надасте його, це спричинить помилку.

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>

>

>

Я: умовність, а не ключове слово

Я - це умовність, а не а Ключове слово Python . Self є параметром у Instance Method, і користувач може використовувати інше ім’я параметра замість нього. Але бажано використовувати self, оскільки це покращує читабельність коду, а також це хороша практика програмування.

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()>

>

>

Вихід:

we have used another parameter name in place of self>