Python sınıfı nesne parametresi

Python işlevleri ve meth

Bir sınıf nesnesinin kabul ettiği argümanlar, __init__() adlı bir işlevden geçirilir. Bu işlevi sınıf bildiriminizde yanlış yazarsanız, “TypeError: object() argüman almaz” kodunuzu çalıştırdığınızda hata veriyor.

Bu kılavuzda, bu hatanın ne anlama geldiğinden ve neden karşılaşabileceğinizden bahsediyoruz. Nasıl düzelteceğinizi anlamanıza yardımcı olmak için bu hatanın bir örneğini inceleyeceğiz.




TypeError: object() argüman almaz

Bir sınıfın nesneleri isteğe bağlı olarak argümanları kabul edebilir. Bu bağımsız değişkenler, bir nesne içindeki değerleri ayarlamak için kullanılır. Aşağıdaki kodu göz önünde bulundurun:

class Çalışan: def __init__(self, name) self.name = name

__init__method, “self.name” Sınıfımızdaki değişken. Bu değişkene sınıfımızdaki herhangi bir metotta başvurabiliriz.

__init__ metodu özel bir metottur. Genellikle yapıcı olarak adlandırılır. Yapıcı yöntemi doğru yazılmalıdır, aksi takdirde bir sınıfın nesnesini bildirdiğiniz bir ifadeye herhangi bir argüman iletemezsiniz.

Başvuru için, __init__ yöntemi şu şekilde yazılır:

İki alt çizgi, ardından “init”, ardından iki altçizgi gelir.

“TypeError: object() hiçbir argüman almaz” hata, uygun olmayan girintilerden de kaynaklanabilir. __init__ yöntemini doğru yazdıysanız, sınıfınızda tutarlı boşluklar ve sekmeler kullandığınızdan emin olmak için kontrol edin.

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şin.

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

Oluşturacağız. elektronik mağazasındaki bir ürünle ilgili bilgileri izleyen bir program. Başlamak için bir sınıf tanımlayın. Bu sınıf, ürünlerimiz için plan görevi görür:

class Ürün: def _init_(self, name , fiyat, marka): self.name = name self.price = fiyat self.brand = marka def show_price(self): print("{} fiyatı ${}.".format(self.name, self. price))

Sınıfımız iki yöntem içeriyor. İlk yöntem yapıcımızdır. Bu metot, sınıfımızın nesnelerinin saklayabileceği tüm değerleri tanımlar. İkinci yöntem, bir ürünün fiyatını görmemizi sağlar.


Sonra, sınıfımızın bir nesnesini oluşturacağız:

george_foreman = Product("Fit Medium Health Grill", 39.99, "George Foreman")

Bu kod, açık olan bir George Foreman ızgarası için bir nesne oluşturur elektronik mağazasında satış. Ardından, bu ürünün fiyatını görebilmemiz için show_price() yöntemimizi çağıracağız:

george_foreman.show_price()

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

İzleme (en son çağrı son): Dosya "main.py", satır 10,  george_foreman = Ürün("Fit Medium Health Grill", 39.99, "George Foreman" ) TypeError: Product() argüman almaz

Kodumuz bir hata mesajı döndürür.




Çözüm

İçerideki değişkenlere başlangıç ​​değerleri atamak için bir nesne, bir nesnenin bildirildiği ifadede bu değişkenlerin değerlerini argüman olarak belirtmeniz gerekir.

Bu, yalnızca bir nesnede geçerli bir __init__ yöntemi varsa çalışır. Aksi takdirde Python, belirttiğiniz değerleri argüman olarak nasıl ele alacağını bilemez. Özel bir __init__ yöntemi olmadan Python, argümanları hangi yöntemin işlemesi gerektiğini bilemez.

Kodumuzda, bir _init_ yöntemi bildirdik (her iki tarafta bir alt çizgi ile):
< /p>

class Ürün: def _init_(kendi, ad, fiyat, marka):

Bu, __init__ ile aynı şekilde ele alınmaz. Bu hatayı çözmek için, bu yöntemi doğru sözdizimini kullanacak şekilde yeniden adlandırmalıyız:

 class Ürün: def __init__(self, name, price, brand): self.name = name self.price = fiyat self.brand = marka

Yöntemimizi __init__ olarak yeniden adlandırdık. Kodumuzu çalıştıralım ve çalışıp çalışmadığını görelim:

Fit Medium Health Grill fiyatı 39,99 $.

Kodumuz bize George Foreman ızgarasının fiyatını başarıyla söylüyor.





TypeError: bu yapıcı argüman almıyor

“TypeError: object() argüman almıyor” hatası “TypeError: bu yapıcı Python 2.x'te hiçbir argüman almaz”

Bu mesaj bize, yapıcımızı tanımlarken bir hata yaptığımızı söylüyor. Bu sorunu çözmek için __init__() yönteminin doğru olduğundan ve hataya neden olan sınıfta doğru girintiyi kullandığınızdan emin olun.




Sonuç

“TypeError: object() alır Argüman kabul eden bir sınıfta __init__ adlı bir yöntem bildirmediğinizde hiçbir argüman” hatası oluşmaz.

Bu hatayı çözmek için kodunuzu iki kez kontrol ederek __init__( ) doğru yazılmış. Yöntemin her iki tarafında iki alt çizgi olmalıdır. kelime “init”.

Artık bu yaygın Python hatasını bir profesyonel gibi!





Python sınıfı nesne parametresi: StackOverflow Questions

Tutorials