CodeGym /Kurslar /Python SELF AZ /Obyektin İnisializasiyası

Obyektin İnisializasiyası

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

4.1 Inizializasiya

Adətən, obyektlər yaradıldıqdan dərhal sonra hələ işləməyə hazır olmur. Əvvəlcə onlara bütün lazımlı məlumatları ötürmək lazımdır: iş parametrləri, başlanğıc dəyərlər, digər obyektlərə keçidlər və s.

Bu proses inizializasiya adlanır və obyekt yaradıldıqdan dərhal sonra baş verməlidir.

Tutaq ki, sizin Cat (Pişik) adlı bir sinfiniz var və siz ona ad və yaş vermək istəyirsiniz, bunu bir neçə üsulla etmək olar:

Obyekt yaradıldıqdan sonra atributların inizializasiyası

Bu nümunədə əvvəlcə:

  • boş bir Cat obyekti yaradılır.
  • Cat sinfinin barsik adlı nümunəsi yaradılır.
  • və sonra barsik obyektinə iki atribut əlavə olunur: nameage birbaşa obyektə əlavə olunur.


class Cat:
    pass
        

# Cat obyektinin yaradılması
barsik = Cat()
        
# Obyekt yaradıldıqdan sonra atributların inizializasiyası
barsik.name = "Barsik"
barsik.age = 5
        
print(f"Pişiyin adı: {barsik.name}, yaşı: {barsik.age}")  # Çıxış: Pişiyin adı: Barsik, yaşı: 5

Atributların inizializasiyası üçün metoddan istifadə

Bu nümunədə atributları inizializasiya etmək üçün initialize metodundan istifadə olunur. Cat obyekti heç bir atribut olmadan yaradılır, sonra isə initialize() metodu atributların dəyərlərinin təyin edilməsi üçün istifadə olunur.


class Cat:
    def initialize(self, name, age):
        self.name = name
        self.age = age
        

# Cat obyektinin yaradılması
barsik = Cat()
        
# Metod vasitəsilə atributların inizializasiyası
barsik.initialize("Barsik", 5)
        
print(f"Pişiyin adı: {barsik.name}, yaşı: {barsik.age}")  # Çıxış: Pişiyin adı: Barsik, yaşı: 5

Sinif səviyyəsində sahələrdən istifadə

Bu nümunədə nameage atributları sinif səviyyəsində təyin olunub. barsik obyekti yaradıldıqdan sonra atributlar birbaşa inizializasiya olunur.


class Cat:
    name = ""
    age = 0
        

# Cat obyektinin yaradılması
barsik = Cat()
        
# Obyekt atributlarının inizializasiyası
barsik.name = "Barsik"
barsik.age = 5
        
print(f"Pişiyin adı: {barsik.name}, yaşı: {barsik.age}")  # Çıxış: Pişiyin adı: Barsik, yaşı: 5

Hansı üsul daha yaxşıdır? Heç biri! Ən yaxşısı konstruktor istifadə etməkdir :)

4.2 Konstruktor

Konstruktor — bu xüsusi bir metoddur ki, avtomatik klassın yeni obyektini yaradarkən çağırılır. Konstruktor obyektin sahələrini inicializasiya etmək üçün istifadə olunur və obyektin qurulması üçün lazım olan hər hansı ilkin əməliyyatı yerinə yetirə bilər.

Python-da konstruktor __init__ adlı metoddur. Onun haqqında əsas faktlar:

  • __init__ metodu Python-da konstruktordur. O, avtomatik olaraq çağırılır, yeni bir klass nümunəsi yaradıldıqda.
  • __init__ ən azı bir parametr qəbul edir — self, hansı ki yaradılan obyektə istinad edir. Bundan əlavə, obyektin atributlarını inicializasiya etmək üçün başqa parametrlər də ötürülə bilər.
  • __init__ metodu daxilində, atributların ilkin dəyərlərini self istifadə edərək təyin edə bilərsiniz.
  • Konstruktor obyektin yaradılması üçün lazım olan hər hansı əməliyyatı, məsələn, giriş verilərinin yoxlanışı və ya digər obyektlərlə əlaqələrin qurulmasını həyata keçirə bilər.

Parametrlər konstruktora avtomatik olaraq ötürülür, siz sadəcə obyektin yaradılması zamanı onları dairəvi mötərizələr daxilində qeyd etməlisiniz.

Bizim pişik nümunəsini konstruktor vasitəsilə necə inicializasiya edəcəyimizə baxaq:


class Cat:
    def __init__(self, name, age):
        self.name = name
        self.age = age


# Cat obyektinin ad və yaş ilə yaradılması
barsik = Cat("Barsik", 5)

print(f"Pişiyin adı: {barsik.name}, yaşı: {barsik.age}")  # Çıxış: Pişiyin adı: Barsik, yaşı: 5

Cat tipli obyekt yaradıldıqdan sonra avtomatik olaraq __init__ metodu çağırılacaq və bu metoda üç parametr ötürüləcək:

  • self parametrinə barsik obyektinə istinad
  • name parametrinə "Barsik" sətri
  • age parametrinə 5 rəqəmi

Bu rahat və gözəldir.

Verilənlərin doğrulanması

Həmçinin konstruktorda verilənlərin doğrulanmasını edə bilərsiniz. Axı konstruktorun məqsədi funksional (düzgün) obyekt yaratmaqdır, hansı ki daha sonra istifadə edilə bilər. Nümunə:


class Cat:
    def __init__(self, name, age):
        if age < 0: raise ValueError("Yaş mənfi ola bilməz")
        self.name = name
        self.age = age


# Yaşın doğrulanması ilə Cat obyektinin yaradılması
try:
    barsik = Cat("Barsik", -3)
except ValueError as e:
    print(e)  # Çıxış: Yaş mənfi ola bilməz
               
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION