Python kendi kendine argüman

Python işlevleri ve meth

Python sınıflarının, yöntemlerine erişebilmeniz için somutlaştırılması veya çağrılması gerekir. Bir sınıfın nesnesini başlatmayı unutursanız ve bir sınıf yöntemine erişmeye çalışırsanız, “eksik 1 gerekli konumsal argüman: ‘self’rdquo; diyen bir hatayla karşılaşırsınız.

Bunda rehberimizde bu hatanın ne anlama geldiğini ve neden oluştuğunu konuşuyoruz. Nasıl düzelteceğinizi öğrenmenize yardımcı olmak için bu hatanın bir örneğinin üzerinden geçiyoruz.




1 gerekli konumsal bağımsız değişken eksik: ‘self’

Konumsal bağımsız değişkenler, bir fonksiyona geçmiştir. Bir sınıfta, her işleve “self” değeri verilmelidir. “self” “bu” JavaScript'te. “kendine” bir sınıfın nesnesinde depolanan verileri temsil eder.

Bir sınıf yöntemini önce o sınıfın bir nesnesini başlatmadan çağırdığınızda, bir hata alırsınız. Bunun nedeni, “self” bir nesne somutlaştırılıncaya kadar hiçbir değeri yoktur.

“eksik 1 gerekli konumsal bağımsız değişkene neden olan en yaygın hatalar: ‘self’rdquo; hata:

  • Bir sınıfın nesnesini başlatmayı unutmak
  • Bir sınıfı başlatmak için yanlış sözdizimini kullanmak

Bu nedenlerin her birini ayrı ayrı inceleyelim.




Neden 1: Bir Nesneyi Örneklemeyi Unutmak

Sınıftaki bir yönteme erişebilmeniz için önce bir nesnenin somutlaştırılması gerekir.< br>

Bir video oyununda bir kahraman hakkında bilgi depolayan bir sınıf tanımlayın:

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ı.

Sonra, bir < ekliyoruz. sınıfımıza bir href="/python-functions/">fonksiyon ekleyin. Sınıfların içindeki fonksiyonlara metot denir. Bu yöntem, bir oyuncunun adını ve oyuncu türünü yazdırır:

def show_player(self) : print("Oyuncu Adı: " + self.name) print("Oyuncu Türü: " + self.player_type)

Bir oyuncu oluşturabilmemiz için sınıfımıza erişmeye çalışın:  ;

luke = Hero.show_player()

Oluşturduk değişkene “luke” atanan bir nesne. Bu nesne Hero sınıfından türetilmiştir. Oyuncu hakkında bilgi göstermek için show_player() yöntemini çağırırız.


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

Geri izleme (en son çağrı): Dosya "main.py", satır 10,  luke = Hero.show_player() TypeError: show_player() gerekli 1 konumsal bağımsız değişken eksik: "self"

Kodumuz başarısız. Bunun nedeni, bir Hero nesnesinin örneğini oluşturmamış olmamızdır. Hero.show_player() çalışmıyor çünkü bilgileri bir Hero oluşturmadık. görüntülenebilir.

Bu hatayı çözmek için, show_player()'u çağırmadan önce bir nesneyi örnekledik:

luke = Hero("Luke", "Mage") luke.show_player()

Kodumuzu tekrar çalıştırın:

Kodumuz başarılı bir şekilde çalışıyor! Önce bir değişken tanımladık “luke” Luke adlı bir oyuncu hakkında bilgi depolar. Luke'un oyuncu tipi "Büyücü"dür. Artık bu nesneyi somutlaştırdığımıza göre, show_player() yöntemini çağırabiliriz.




Neden #2: Bir Sınıfı Yanlış Şekilde Başlatma

“eksik 1 gerekli konumsal argüman: ‘self’rdquo; bir sınıfı yanlış başlattığınızda hata oluşabilir. Şu kodu göz önünde bulundurun:

luke = Hero luke.show_player()
< p>Bu kod son örnekteki çözümümüze benzese de yanlıştır. Bunun nedeni, Hero kelimesinden sonra herhangi bir parantez eklememiş olmamızdır. Programımız bu parantezleri kaçırarak bir sınıfı başlatmak istediğimizi bilmiyor.

Bu sorunu Hero'dan sonra parantez ekleyerek ve gerekli argümanları “name” belirterek çözün. ve “player_type”:

luke = Hero("Luke", "Mage") luke.show_player( )

Kodumuz artık başarılı bir şekilde çalışıyor ve oynatıcımız hakkında bilgi veriyor:

Oyuncu Adı: Luke Oyuncu Türü: Büyücü



Sonuç

“eksik 1 gerekli konumsal argüman: ‘self’rdquo; Bir sınıf yöntemini çağırmadan önce bir sınıfın nesnesini başlatmadığınızda hata oluşur. Bu hata, bir sınıfı yanlış bir şekilde başlattığınızda da ortaya çıkar.


Bu hatayı çözmek için, o sınıfın herhangi bir yöntemine erişmeye çalışmadan önce, bir sınıfın nesnesini örneklediğinizden emin olun. Ardından, doğru olanı kullandığınızdan emin olun. bir nesneyi başlatmak için sözdizimi.

Artık bu yaygın hatayı uzman Python geliştiricisi< gibi çözmeye hazırsınız. /a>!





Python kendi kendine argüman: StackOverflow Questions

Tutorials