Siniflər üçün təyin edilən metodlar içərisində xüsusi əhəmiyətə malik __init__() adlı bir metod var. Bu metod sinfin nümayəndəsi (obyekt) meydana gətirildikdən sonra işə düşür. Müxtəlif növ inisiallaşdırmalar (başlanğıc qiymətlərin verilməsi və ilkin əməliyyatlar) üçün __init__() metodunun istifadəsi çox faydalıdır. Ədəbiyyatda __init__() metoduna konstruktor da deyilir.
Aşağıdakı nümunəni nəzərdən keçirin:
class Kvadrat: adef="Kvadrat - bütün tərəfləri bərabər olan dördbucaqlıdır." def __init__(self): print(Kvadrat.adef) def k_perim(self, a): return 4*a def k_area(self, a): return a*a kv = Kvadrat()
Biz burada Kvadrat sinfini elan etdikdən sonra bu sinfin kv nümayəndəsini meydana gətiririk. Sözü gedən obyektin meydana gəlməsindən sonra da __init__() metodu işə düşür. Nəticədə bu metodda nəzərdə tutulmuş əməliyat icra olunur:
>>> Kvadrat - bütün tərəfləri bərabər olan dördbucaqlıdır. >>>
Gördüyünüz kimi burada __init__() metoduna self parametrini saymasaq heç bir arqument ötürülmür. Lakin zərurət olduqda konstruktor əlavə parametrlərlə də təyin edilə bilər:
class Kvadrat: adef="Kvadrat - bütün tərəfləri bərabər olan dördbucaqlıdır." def __init__(self, name): print(Kvadrat.adef) print("{0} kvadratı".format(name)) def k_perim(self, a): return 4*a def k_area(self, a): return a*a kv1 = Kvadrat("ABCD") kv2 = Kvadrat("EFGH")
Yuxarıdakı proqram kodunda Kvadrat sinfinin __init__() metodunu elan edərkən self ilə yanaşı name parametrini də təyin edirik. Sonra bu sinfin kv1 və kv2 adlı iki ayrı obyektlərini meydana gətiririk. Daha öncə obyektləri meydana gətirərkən biz arqumentlərdən istifadə etmirdik. İndi isə diqqət etdinizsə, kv1 və kv2 nümayəndələri üçün sinif adından sonra mötərizə daxilində arqument kimi müvafiq olaraq “ABCD” və “EFGH” qiymətlərini verdik. Bu qiymətlər hər bir nümayəndə üçün __init__() metodunun name parametrinə ötürülür. Beləliklə hər bir obyektin inisiallaşdırılması zamanı konstruktora göndərilən arqumentlərdə öz qiymətləri yer alır. Onu da qeyd edək ki, __init__() metodunda istənilən sayda parametr təyin edilə bilər. Obyekt meydana gətirilərkən arqumentlərin qiymətləri ardıcıl şəkildə bu parametrlərə ötürülür. Gördüyünüz kimi __init__() metodunun tətbiqi siniflər üçün çox böyük əhəmiyət kəsb edir.