Instance methodInstance methodlar (ya'ni aynan obyektga biriktirilgan methodlar) OOPning fundamental g'oyalaridan biri. Aynan ular ma'lumot saqlangan jonsiz strukturani jonli obyektga aylantirishda asosiy omil.
Xo'sh, Java, Python kabi VM instruksiyalarga kompilyatsiya bo'ladigan tillarda method obyektga qanday bog'langan? Axir VM protsedural, u OOP nimaligini bilmaydi-ku?
Ko'plab detallarni tushirib qoldirib, o'ta sodda qaraydigan bo'lsak, instance method xuddi oddiy funksiya kabi ishlaydi. Faqat qo'shimcha yana bitta argument – obyektning o'zini oladi.
Masalan, "mashina" obyektida "signal chal" degan method bo'lsa, compiler methodni obyektga emas, obyektni methodga kiritadi. Ya'ni mashinangizning "signal chal" degan methodini ishlatish uchun "mashina signalini chal" degan funksiyaga mashinangizni argument sifatida berish kerak bo'ladi.
Mana bu yerda kod orqali ko'rsatilgan.
Obyektni argument sifatida o'tkazish esa explicit (ochiq) yoki implicit (yopiq) ko'rinishda bo'lishi mumkin. Masalan, Pythonda
self argumenti methodga nolinchi argument sifatida ochiq tarzda o'tkazilsa, Java yoki PHPda
this argumenti avtomatik tarzda "parda ortida" o'tkaziladi, ya'ni buni siz qilishingiz shart emas.
Oxirgi muammo qoldi – static methodlarni instance methodlardan farqlash. Sababi obyekt faqat instance methodlarga o'tishi kerak. Buning uchun ko'plab tillar
static keywordini ishlatsa, Python
@staticmethod dekoratorini ishlatadi.
@boboshersnotes