Metodele clasei
O metodă este o funcție care aparține unei clase. Metodele descriu ce pot face obiectele acelei clase.
Notă: Fiecare metodă primește self ca prim parametru.
Exemplu
O clasă cu o metodă:
Ieșire: program Python complet
class Person:
def __init__(self, name):
self.name = name
def greet(self):
print("Bună, numele meu este " + self.name)
p1 = Person("Emil")
p1.greet()
Metode cu parametri
La fel ca la funcțiile obișnuite, poți transmite parametri metodelor:
Exemplu
O clasă ale cărei metode primesc parametri:
Ieșire: program Python complet
class Calculator:
def add(self, a, b):
return a + b
def multiply(self, a, b):
return a * b
calc = Calculator()
print(calc.add(5, 3))
print(calc.multiply(4, 7))
Metode care accesează proprietăți
Prin self, o metodă poate citi și schimba proprietățile obiectului său:
Exemplu
Această metodă citește proprietățile obiectului:
Ieșire: program Python complet
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def get_info(self):
return f"{self.name} are {self.age} de ani"
p1 = Person("Tobias", 28)
print(p1.get_info())
Metode care modifică proprietăți
O metodă poate și să schimbe liber proprietățile unui obiect:
Exemplu
Această metodă actualizează valoarea unei proprietăți:
Ieșire: program Python complet
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def celebrate_birthday(self):
self.age += 1
print(f"La mulți ani! Acum ai {self.age} de ani")
p1 = Person("Linus", 25)
p1.celebrate_birthday()
p1.celebrate_birthday()
Metoda __str__()
Metoda specială __str__() decide ce vezi atunci când un obiect este afișat:
Exemplu
Afișarea unui obiect care nu are __str__():
Ieșire: program Python complet
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Emil", 36)
print(p1)
Exemplu
Afișarea unui obiect care definește __str__():
Ieșire: program Python complet
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name} ({self.age})"
p1 = Person("Tobias", 36)
print(p1)
Mai multe metode
Mai multe metode dintr-o clasă pot lucra împreună:
Exemplu
O clasă cu mai multe metode care cooperează:
Ieșire: program Python complet
class Playlist:
def __init__(self, name):
self.name = name
self.songs = []
def add_song(self, song):
self.songs.append(song)
print(f"Adăugat: {song}")
def remove_song(self, song):
if song in self.songs:
self.songs.remove(song)
print(f"Eliminat: {song}")
def show_songs(self):
print(f"Lista de redare '{self.name}':")
for song in self.songs:
print(f"- {song}")
my_playlist = Playlist("Favorites")
my_playlist.add_song("Bohemian Rhapsody")
my_playlist.add_song("Stairway to Heaven")
my_playlist.show_songs()
Ștergerea metodelor
Cuvântul cheie del poate elimina și o metodă dintr-o clasă:
Exemplu
Elimină o metodă, apoi încearcă să o apelezi:
Ieșire: program Python complet
class Person:
def __init__(self, name):
self.name = name
def greet(self):
print("Bună!")
p1 = Person("Emil")
del Person.greet
p1.greet() # Aceasta va provoca o eroare