Хичээлээр dunder method буюу "шидэт арга" -ын талаар авч үзье. dunder гэдэг нь хоёр доогуур зураас бөгөөд эдгээр тэмдэгтээр тэмдэглэгдсэн аргуудыг "шидэт арга" буюу тусгай арга гэж нэрлэдэг. Ийм аргуудыг хэрэглэгчийн кодод дахин тодорхойлон ажиллагааны логикийг өөрчлөх боломж байдаг. Асуудлыг дараах
жишээгээр авч үзье.
1-р нүдэнд Point классийг тодорхойлсон. Point классийн __init__ арга ч бас "шидэт арга" бөгөөд классийн хувийг үүсгэх тусгай зориулалттай. 2-р нүдэнд Point классийн хувийг үүсгээд түүнийг print командад өгвөл хэрэглэгчид тийм тодорхой бус мэдээллийг үзүүлнэ. print командаар илүү ойлгомжтой мэдээллийг харуулах хэрэгтэй гэвэл класст
классийг мөр хэлбэрээр үзүүлэх __str__ аргыг дахин тодорхойлон өгдөг. Одоо 2-р нүдэнд Point классийн хувийг үүсгээд түүнийг print командад өгвөл классийн хувийн талаар илүү тодорхой мэдээллийг өгнө. Эндээс print команд өөрт нь дамжуулсан хувьсагчийн __str__ аргаас буцаах утгыг л үзүүлдэг гэсэн үг.
жишээг харцгаая. 2-р нүдэнд мөр үүсгээд түүний уртыг len дотоод функцээр тодорхойлсон. Гэтэл 3-р нүдэнд 1-р нүдэнд тодорхойлсон Road классийн хувийг үүсгээд түүний уртыг len дотоод функцээр тодорхойлох оролдлого хийвэл Road төрлийн обьектод len байхгүй гэсэн алдааг өгнө. Тэгвэл классын тодорхойлолтод
Атрибутын уртыг тооцон буцаах __len__ аргыг тодорхойлон түүнийг ашиглах боломжтой.
Хоёр доогуур зураасаар тэмдэглэсэн аргууд их олон байдаг ч ихэнхдээ __str__ аргыг голдуу дахин тодорхойлдог.
Python дээр хийдэг олон зүйлийг "шидэт арга" -аар хийж болохыг дараах
жишээнээс харж болно. 8-р нүдэнд 5+3 үйлдлийг ердийн аргаар харин 5 -р нүдэнд 5 утгатай x хувьсагчийн __add__ шидэт аргад 3 -ыг дамжуулан 5+3 үйлдлийг хийсэн. Харин 6 -р нүдэнд тодорхойлсон жагсаалтын 2 -р элементийг авахыг 7 -р нүдэнд __getitem__ аргаар дамжуулан авах жишээнүүдийг харууллаа. Dunder аргуудыг дахин тодорхойлоод байх шаардлага бага гардаг ч python -ий сайт эсхүл google -ээр хайн dunder method -ийн тодорхойлолтыг олон түүнийг дээрх жишээнд үзүүлсний адилаар дахин тодорхойлох боломжууд байдгийг мэдэж байх нь чухал.