Python nesne yöntemi

Python işlevleri ve meth

Python'da Argümanlar 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 çözüm 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özlükler ve demetler gibi veri türleridir. __getitem__ yöntemi, Python yorumlayıcısının bir koleksiyondan tek bir öğe almasına izin verir.

Tüm 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 önünde bulundurun:

peynirler = ["Edam", "Stilton", "English Cheddar", "Parmesan"] print(peynirler[0])

Bu kod, dizin konumu 0'daki peynir olan “Edam”'ı döndürür. İş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 ülkeden 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. Bugün 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 ülkesinin 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 = Cheese("Edam", "Hollanda")

“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:

edam.get_country["Almanya"]

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örün olur:

Tracebac k (en son çağrı): Dosya "main.py", satır 14,  edam.get_country["Almanya"] TypeError: 'method' nesnesi abone olunamaz

Kodumuzda bir hata oluştu.

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

edam.get_country["Almanya"]

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, çünkü 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 küme parantezleriyle değiştirin:

edam.get_country("Almanya")

div>

Kodumuzu çalıştıralım ve ne olduğunu görelim:

Edam değil Almanyadan. Hollanda'dan.

Kodumuz başarıyla yürütülüyor. 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 ülkesine eşit olsun ya da olmasın:

edam.get_country("Hollanda")

Kodumuz şunu döndürür:

Edam Hollanda'dan.

Belirttiğimiz değer peynirin menşe ülkesine 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 küme 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ı!





Python nesne yöntemi: StackOverflow Questions

Tutorials