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>