Proqramlaşdırma

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.0

Xü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.

Müəllif: Nibras Code