Obyekt yönümlü proqramlaşdırma
Sinif, obyekt, metod, __init__ və varislik.
Bütün dərslər · Python dərsləri: sıfırdan öyrən
Sinif və obyekt
Sinif obyektin layihəsidir, obyekt isə həmin layihədən yaradılan konkret nüsxədir. Məsələn, «Hesab» sinfindən hər müştəri üçün ayrı obyekt yaranır. __init__ metodu obyekt yaranarkən işləyir, self isə obyektin özüdür.
class Account:
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance
def deposit(self, amount):
self.balance += amount
def show(self):
print(f"{self.owner}: {self.balance} AZN")
a = Account("Rena", 50)
a.deposit(25)
a.show() # Rena: 75 AZN- Dəyişənlər (atributlar) obyektin vəziyyətini saxlayır.
- Metodlar obyektin edə biləcəyi işlərdir.
Varislik
Varislik yeni sinfin mövcud sinfin imkanlarını götürməsinə imkan verir. Alt sinif ana sinfin metodlarını alır, istəsə onları dəyişir (override) və ya super() ilə ana sinfi çağırır.
class Account:
def __init__(self, owner, balance=0):
self.owner, self.balance = owner, balance
class SavingsAccount(Account):
def __init__(self, owner, balance=0, rate=0.05):
super().__init__(owner, balance)
self.rate = rate
def add_interest(self):
self.balance *= 1 + self.rate
s = SavingsAccount("Tural", 200)
s.add_interest()
print(s.balance) # 210.0Xüsusi metodlar və xəbərdarlıq
__str__ obyektin print ilə necə göstəriləcəyini təyin edir, __len__ len() ilə işləməyi təmin edir. İkiqat alt xətt dilin xüsusi mexanizmlərini işarələyir.
class Playlist:
def __init__(self, songs):
self.songs = songs
def __len__(self):
return len(self.songs)
def __str__(self):
return "Playlist: " + ", ".join(self.songs)
p = Playlist(["A", "B"])
print(p, len(p))Tövsiyə: hər şeyi sinifə çevirmək lazım deyil. Sadə hesablama üçün funksiya kifayətdir; sinif isə vəziyyət və davranış birlikdə lazım olanda faydalıdır.