Parametrul self
În interiorul unei metode, self se referă la instanța concretă a clasei cu care lucrează metoda.
Prin el ajungi la proprietățile și metodele care aparțin clasei.
Notă: În fiecare metodă a clasei, self trebuie să fie primul în lista de parametri.
Exemplu
Citește o proprietate a clasei prin self:
Ieșire: program Python complet
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print("Salut, numele meu este " + self.name)
p1 = Person("Emil", 25)
p1.greet()
De ce folosim self?
self este modul în care Python știe la proprietățile cărui obiect te referi. Fără el, nu ar exista nicio modalitate de a afla:
Exemplu
Datorită lui self, metoda lucrează cu obiectul pe care a fost apelată:
Ieșire: program Python complet
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 nu trebuie să se numească „self”
Numele în sine nu este obligatoriu. Merge orice nume, atât timp cât acel parametru este primul în fiecare metodă a clasei:
Notă: Faptul că poți alege alt nume nu înseamnă că ar trebui să o faci. self este convenția din Python, iar dacă o respecți, codul tău este mai ușor de citit pentru ceilalți.
Exemplu
Aici myobject și abc iau locul lui self:
Ieșire: program Python complet
class Person:
def __init__(myobject, name, age):
myobject.name = name
myobject.age = age
def greet(abc):
print("Salut, numele meu este " + abc.name)
p1 = Person("Emil", 36)
p1.greet()
Accesarea proprietăților cu self
Orice proprietate a clasei îți este la îndemână prin self:
Exemplu
Citește mai multe proprietăți prin self:
Ieșire: program Python complet
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()
Apelarea metodelor cu self
self îi permite unei metode și să apeleze alte metode ale aceleiași clase:
Exemplu
O metodă apelează alta prin self:
Ieșire: program Python complet
class Person:
def __init__(self, name):
self.name = name
def greet(self):
return "Salut, " + self.name
def welcome(self):
message = self.greet()
print(message + "! Bine ai venit pe site-ul nostru.")
p1 = Person("Tobias")
p1.welcome()