self
- это ссылка на экземпляр класса.
Используется внутри методов класса для доступа к атрибутам (переменным) и другим методам этого экземпляра.
Фактически, это способ, которым метод "знает", с каким именно объектом он работает.
Всегда указывается первым аргументом в определении метода класса.
В Python, self
- это соглашение об именовании первого параметра в методе класса, который представляет экземпляр (объект) этого класса. Хотя можно использовать другое имя, крайне рекомендуется придерживаться self
, так как это общепринятая практика и делает код более понятным для других разработчиков.
Роль self
:
self
позволяет методу получить доступ к атрибутам, специфичным для конкретного экземпляра класса. Например, если у вас есть класс Person
с атрибутами name
и age
, вы можете установить и получить доступ к этим атрибутам через self.name
и self.age
.self
позволяет методу вызывать другие методы, определенные в этом же классе, для текущего экземпляра. Это обеспечивает возможность организации кода и повторного использования логики.Примеры:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
def have_birthday(self):
self.age += 1
print(f"Happy birthday! Now I am {self.age} years old.")
def introduce(self):
self.greet() # Вызов другого метода экземпляра через self
# Создание экземпляра класса
person1 = Person("Alice", 30)
# Доступ к атрибутам экземпляра через self (неявно внутри методов)
person1.greet() # Output: Hello, my name is Alice and I am 30 years old.
# Вызов метода, изменяющего атрибут экземпляра через self
person1.have_birthday() # Output: Happy birthday! Now I am 31 years old.
person1.introduce() # Output: Hello, my name is Alice and I am 31 years old.
Важно:
self
не является ключевым словом; это просто соглашение об именовании.self
используется только в методах экземпляра (обычных методах, которые вызываются для конкретного объекта класса). Он не используется в статических методах или методах класса (которые используют @staticmethod
и @classmethod
декораторы, соответственно).person1.greet()
), Python автоматически передает экземпляр (person1
) в качестве первого аргумента (self
) метода. Вам не нужно передавать его явно.В заключение, self
является ключевым элементом объектно-ориентированного программирования на Python. Он позволяет экземплярам класса обращаться к своим собственным данным и методам, обеспечивая инкапсуляцию и организацию кода.