Polimorfizm
Polimorfizm – bu aynan bitta metodning turli klasslarda turlicha amal qilishidir.Masalan, biz ikkita sonni bir-biriga qo`shishimiz va ikkita satrni bir-biriga ulashimiz mumkin.Bu holda biz ikkita bir-biridan farqli natijaga erishamiz, chunki, sonlar va satrlar bir-biridan farqli klasslardir.
>>> 1 + 1
2
>>> "1" + "1"
'11'
30-bob
Operatorlarni yuklash
Operatorlarni yuklash – bu polimorfizmni amalga oshirish usullaridan biri bo`lib, unda biz o`zimizning birorta klassimizda biror-bir metodni amalga oshirishimiz mumkin bo`ladi.
class A:
def go(self):
print('Go, A!')
class B(A):
def go(self, name):
print('Go, {} !'.format(name))
Masalan, bizda 2 ta klass bor bo`lsin.
Bu misolimizda B klass A klassning meros klassi bo`lib, lekin go metodini qayta tavsiflamoqda. Shuning uchun ham u A klassining ayni shu metodiga unchalik ham o`xshamaydi.
Lekin Pythonda shunday metodlar borki, ular odatda, to`g`ridan-to`g`ri chaqirilmasdan, tarkibiy funksiyalar yoki operatorlar yordamida chaqiriladi.
Masalan, __init__ metodi klass konstruktorini yuklaydi. Konstruktor – klass ekzamplyarini yaratadi.
>>> class A:
... def __init__(self, name):
... self.name = name
...
>>> a = A('Vali')
>>> print(a.name)
Vali
Endi esa, quyida mana shunday kuchli metodlar va ularning vazifalari haqida so`z boradi.
__new__(cls[, ...]) – ekzemplyar yaratishni boshqaradi. Majburiy arzument sifatida klassni qabul qiladi(ekzemplyar bilan adashtirmang). Klass ekzemplyarini uni keyinvchalik __init__ metodiga uzatish maqsadida qaytaradi.
__init__(self[, ...]) – yuqorida aytib o`tilganidek – konstruktor.
__del__(self) – chizindilar tozalovchisi tomonidan ob`yektni o`chirilganda ishga tushiriladi.
Dostları ilə paylaş: |