Параметр self
Внутри метода self обозначает конкретный экземпляр класса, с которым работает метод.
Через него вы получаете доступ к свойствам и методам, которые принадлежат классу.
Примечание: в каждом методе класса self должен стоять первым в списке параметров.
Пример
Прочитайте свойство класса через self:
Вывод: полная программа на Python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print("Привет, меня зовут " + self.name)
p1 = Person("Emil", 25)
p1.greet()
Зачем нужен self?
Благодаря self Python знает, свойства какого объекта вы имеете в виду. Без него это невозможно было бы определить:
Пример
Благодаря self метод работает с тем объектом, для которого он был вызван:
Вывод: полная программа на Python
class Person:
def __init__(self, name):
self.name = name
def printname(self):
print(self.name)
p1 = Person("Tobias")
p2 = Person("Linus")
p1.printname()
p2.printname()
self не обязательно называть «self»
Само это имя не обязательно. Подойдёт любое имя, если этот параметр стоит первым в каждом методе класса:
Примечание: то, что вы можете выбрать другое имя, ещё не значит, что так стоит делать. self — это соглашение в Python, и следование ему делает ваш код понятнее для других.
Пример
Здесь myobject и abc заменяют self:
Вывод: полная программа на Python
class Person:
def __init__(myobject, name, age):
myobject.name = name
myobject.age = age
def greet(abc):
print("Привет, меня зовут " + abc.name)
p1 = Person("Emil", 36)
p1.greet()
Доступ к свойствам через self
Через self доступно любое свойство класса:
Пример
Прочитайте несколько свойств через self:
Вывод: полная программа на Python
class Car:
def __init__(self, brand, model, year):
self.brand = brand
self.model = model
self.year = year
def display_info(self):
print(f"{self.year} {self.brand} {self.model}")
car1 = Car("Toyota", "Corolla", 2020)
car1.display_info()
Вызов методов через self
self также позволяет методу вызывать другие методы того же класса:
Пример
Один метод вызывает другой через self:
Вывод: полная программа на Python
class Person:
def __init__(self, name):
self.name = name
def greet(self):
return "Привет, " + self.name
def welcome(self):
message = self.greet()
print(message + "! Добро пожаловать на наш сайт.")
p1 = Person("Tobias")
p1.welcome()