Python nesne yöntemi

| | | | | | | | | | | | | | | |

Python’da Argumanlar y√∂ntemleri parantez içinde belirtilmelidir. Bunun nedeni, i≈ülevlerin ve y√∂ntemlerin, çaƒürƒ±ldƒ±klarƒ±nƒ± s√∂ylemek için parantez kullanmasƒ±dƒ±r. Bir y√∂ntemi çaƒüƒ±rmak için k√∂≈üeli parantez kullanƒ±rsanƒ±z, bir "TypeError: ‚Äòmethod‚Äô nesne abone olunamaz‚" error.

Bu kƒ±lavuzda, bu hatanƒ±n ne anlama geldiƒüini ve neden kar≈üƒ±la≈üabileceƒüinizi tartƒ±≈üƒ±yoruz. Bir ç√∂zum geli≈ütirmenize yardƒ±mcƒ± olmak için bu hatanƒ±n bir √∂rneƒüini inceliyoruz.

TypeError: ‘method’ nesne abone olunamaz

Abone olunabilir nesneler __getitem__ yöntemine sahip nesnelerdir. Bunlar listeler, sözlukler ve demetler gibi veri turleridir. __getitem__ yöntemi, Python yorumlayıcısının bir koleksiyondan tek bir öğe almasına izin verir.

Tum nesneler abone olunamaz. Y√∂ntemler, √∂rneƒüin, deƒüildir. Bunun nedeni, __getitem__ y√∂ntemini uygulamamalarƒ±dƒ±r. Bu, bir y√∂ntemdeki √∂ƒüelere eri≈ümek veya bir y√∂ntemi çaƒüƒ±rmak için k√∂≈üeli parantez s√∂zdizimini kullanamayacaƒüƒ±nƒ±z anlamƒ±na gelir.

≈ûu kod parçacƒ±ƒüƒ±nƒ± g√∂z √∂nunde bulundurun:

Bu kod, dizin konumu 0’daki peynir olan "Edam‚"’ƒ± d√∂ndurur. ƒ∞≈ülevler ve y√∂ntemler abone olunabilir nesneler olmadƒ±ƒüƒ±ndan, bir i≈ülevi veya y√∂ntemi çaƒüƒ±rmak için k√∂≈üeli parantez kullanamayƒ±z.

Örnek Bir Senaryo

Burada peynirleri nesnelerde saklayan bir program olu≈üturuyoruz. "Peynir‚" bir peynir tanƒ±mlamak için kullandƒ±ƒüƒ±mƒ±z sƒ±nƒ±f, bir peynirin belirli bir men≈üe ulkeden olup olmadƒ±ƒüƒ±nƒ± kontrol etmemizi saƒülayan bir metoda sahip olacaktƒ±r.

bir sınıf tanımlama. Bu sınıfa Peynir diyoruz:

Katƒ±lƒ±mcƒ±larƒ±n %81’i, bir eƒüitim kampƒ±na katƒ±ldƒ±ktan sonra teknik i≈ü beklentileri konusunda daha emin hissettiklerini belirtti. Bugun bir eƒüitim kampƒ± ile e≈üle≈ütirin.

Ortalama bir eƒüitim kampƒ± mezunu, bir eƒüitim kampƒ±na ba≈ülamaktan ilk i≈üini bulmaya kadar, kariyer geçi≈üinde altƒ± aydan az zaman harcadƒ±.

Sƒ±nƒ±fƒ±mƒ±z iki y√∂ntem içerir. ƒ∞lk y√∂ntem Cheese nesnesinin yapƒ±sƒ±nƒ± tanƒ±mlar. ƒ∞kincisi, bir peynirin men≈üe ulkesinin belirli bir deƒüere e≈üit olup olmadƒ±ƒüƒ±nƒ± kontrol etmemizi saƒülar.

Sonra, Cheese sınıfımızdan bir nesne oluşturuyoruz:

"edam‚" deƒüi≈ükeni bir nesnedir. Peynirin adƒ± Edam’dƒ±r ve men≈üei Hollanda’dƒ±r.< br>

Sonra, get_country() y√∂ntemimizi çaƒüƒ±ralƒ±m:

Bu kod, Cheese sƒ±nƒ±fƒ±ndan get_country() y√∂ntemini çalƒ±≈ütƒ±rƒ±r. get_country() y√∂ntemi, "edam‚" nesnemizdeki "origin‚" deƒüerinin "Almanya‚"ya e≈üit olup olmadƒ±ƒüƒ±nƒ± kontrol eder.

Kodumuzu çalƒ±≈ütƒ±rƒ±n ve ne olduƒüunu g√∂run olur:

Kodumuzda bir hata oluştu.

Kod satırını analiz edelim Python hata ayıklayıcısının hatalı olarak tanımladığı:

Bu kod satƒ±rƒ±nda, get_country() y√∂ntemini çaƒüƒ±rmak için k√∂≈üeli parantezler kullanƒ±yoruz. Bu kabul edilebilir bir s√∂zdizimi deƒüildir, çunku bir listedeki √∂ƒüelere eri≈ümek için k√∂≈üeli parantezler kullanƒ±lƒ±r. ƒ∞≈ülevler ve nesneler abone olunamaz olduƒüundan, onlarƒ± çaƒüƒ±rmak için k√∂≈üeli parantezler kullanamayƒ±z.

Bu hatayƒ± ç√∂zmek için, k√∂≈üeli parantezleri kume parantezleriyle deƒüi≈ütirin:

Kodumuzu çalƒ±≈ütƒ±ralƒ±m ve ne olduƒüunu g√∂relim:

Kodumuz ba≈üarƒ±yla yurutuluyor. Edam’ƒ±n "Hollanda’lƒ± olup olmadƒ±ƒüƒ±nƒ± kontrol etmeye çalƒ±≈üalƒ±m. fonksiyonumuzun her durumda çalƒ±≈ütƒ±ƒüƒ±ndan emin olmak için belirttiƒüimiz deƒüer peynirin men≈üe ulkesine e≈üit olsun ya da olmasƒ±n:

Kodumuz şunu döndurur:

Belirttiƒüimiz deƒüer peynirin men≈üe ulkesine e≈üitse kodumuz çalƒ±≈üƒ±r.

Sonuç

Bir sƒ±nƒ±f içinde bir y√∂ntemi çaƒüƒ±rmak için k√∂≈üeli parantezler kullandƒ±ƒüƒ±nƒ±zda "TypeError: ‚Äòmethod‚Äônesne is not inscriptable‚" hatasƒ± ortaya 烱kƒ±yor.Bu hatayƒ± ç√∂zmek için , çaƒüƒ±rmak istediƒüiniz y√∂ntemin adƒ±ndan sonra yalnƒ±zca kume parantezleri kullanarak bir sƒ±nƒ±fƒ±n y√∂ntemlerini çaƒüƒ±rdƒ±ƒüƒ±nƒ±zdan emin olun.

Artık bu yaygın Python hatasını profesyonel kodlayıcı!