Что такое self в Python классах
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Основы «Python»
Комментариев: 0

В Python мы можем с легкостью создать статичный метод. Давайте рассмотрим примеры использования self.

Создадим класс студента, который будет принимать имя студента, а также создадим статический метод.

class Student:
    
    def __init__(self, name):
        self.name = name
    
    @staticmethod
    def static_method():
        return 'static method'

Из этого статического метода мы не можем использовать объекты класса. А если мы создадим такой же метод, но с self, мы сможем управлять объектами класса, взаимодействовать с ними на уровне функций. 

Рассмотрим пример с использованием self.

class Student:

    def __init__(self, name):
        self.name = name

    @staticmethod
    def static_method():
        return print('static method')

    def self_method(self):
        return print(self.name)


student = Student(name='Vladislav')
student.self_method()
student.static_method()

Результат:

Vladislav
static method

Если же я захочу вывести в статическом методе self.name, я получу ошибку следующего вида, тем самым убеждаясь, что я не могу получать доступ к экземплярам класса.

class Student:

    def __init__(self, name):
        self.name = name

    @staticmethod
    def static_method():
        return print('static method', self.name)

    def self_method(self):
        return print(self.name)


student = Student(name='Vladislav')
student.self_method()
student.static_method()

Результат:

Vladislav
Traceback (most recent call last):
  File "C:\Users\Razilator\Desktop\Courses\nth-coding\articles\self\main.py", line 16, in <module>
    student.static_method()
  File "C:\Users\Razilator\Desktop\Courses\nth-coding\articles\self\main.py", line 8, in static_method
    return print('static method', self.name)
NameError: name 'self' is not defined

self ключевое слово?

self используется во многих местах Python, поэтому люди думают, что это ключевое слово.

Но в отличие от C++ self не является ключевым словом. 

На самом деле мы можем использовать любое имя для первого параметра метода, но настоятельно рекомендуется придерживаться стандарта.

Но как пример, приведу следующий код:

class Student:

    def __init__(student, name):
        student.name = name

    @staticmethod
    def static_method():
        return print('static method')

    def self_method(student):
        return print(student.name)


student = Student(name='Vladislav')
student.self_method()
student.static_method()

Результат будет тот же.

Vladislav
static method

Таким образом, self является указанием явного использования экземпляров класса. 

Теги записи: Python, Основы Python, self,
Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)