parámetro de objeto de clase python

Funciones y métodos de Python

Los argumentos que acepta un objeto de clase se pasan a través de una función llamada __init __ () . Si escribe mal esta función en la declaración de su clase, encontrará un & ldquo; TypeError: object () no tiene argumentos & rdquo; error cuando ejecuta su código.

En esta guía, hablamos sobre lo que significa este error y por qué puede encontrarlo. Veremos un ejemplo de este error para ayudarlo a descubrir cómo solucionarlo.




TypeError: object () no toma argumentos

Objetos de una clase opcionalmente pueden aceptar argumentos. Estos argumentos se utilizan para establecer valores dentro de un objeto. Considere el siguiente código:

 class Empleado: def __init __ (self, name) self.name = name 

El método __init__ nos permite asignar un valor para el & ldquo; self.name & rdquo;  variable en nuestra clase. Podemos hacer referencia a esta variable en cualquier método de nuestra clase.

El método __init__ es un método especial. A menudo se le llama constructor. El método constructor debe estar escrito correctamente; de ​​lo contrario, no puede pasar ningún argumento a una declaración en la que declare un objeto de una clase.

Como referencia, el método __init__ se escribe como:

Dos guiones bajos, seguidos de & ldquo; init & rdquo;, seguidos de dos guiones bajos.

El & ldquo; TypeError: object () no acepta argumentos & rdquo; El error también puede deberse a una sangría incorrecta. Si ha escrito el método __init__ correctamente, asegúrese de usar espacios y pestañas consistentes en su clase.

El 81% de los participantes afirmó que se sentía más seguro acerca de sus perspectivas laborales de tecnología después de asistir a un bootcamp. Asigne a un bootcamp hoy mismo.

El graduado promedio de bootcamp pasó menos de seis meses en la transición profesional, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Vamos a crear un programa que rastrea información sobre un producto en una tienda de electrónica. Para empezar, defina una clase. Esta clase sirve como modelo para nuestros productos:

 class Producto: def _init_ (self, name , precio, marca): self.name = nombre self.price = precio self.brand = brand def show_price (self): print ("El precio de {} es $ {}.". format (self.name, self. price)) 

Nuestra clase contiene dos métodos . El primer método es nuestro constructor. Este método define todos los valores que pueden almacenar los objetos de nuestra clase. El segundo método nos permite ver el precio de un producto.


A continuación, vamos a crear un objeto de nuestra clase:

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

Este código crea un objeto para una parrilla George Foreman que está encendida en la tienda de electrónica. A continuación, vamos a llamar a nuestro método show_price () para que podamos ver el precio de este producto:

 george_foreman.show_price () 

Ejecutemos nuestro código y veamos qué sucede:

 Traceback (última llamada más reciente): Archivo "main.py", línea 10, en & lt; módulo & gt; george_foreman = Producto ("Fit Medium Health Grill", 39,99, "George Foreman" ) TypeError: Product () no toma argumentos 

Nuestro código devuelve un mensaje de error.




La solución

Para asignar valores iniciales a las variables dentro un objeto, tienes que especificar los valores de esas variables como argumentos en la declaración donde se declara un objeto.

Esto solo funciona si hay un método __init__ válido en un objeto. De lo contrario, Python no sabe cómo tratar los valores que ha especificado como argumentos. Sin un método especial __init__, Python no sabría qué método debe procesar los argumentos.

En nuestro código, hemos declarado un método _init_ (con un guión bajo en cada lado):

 class Producto: def _init_ (self, name, price, brand): 

Esto no se trata igual que __init__. Para solucionar este error, tenemos que cambiar el nombre de este método para que use la sintaxis correcta:

 class Producto: def __init __ (self, name, price, brand): self.name = name self.price = price self.brand = brand 

Hemos cambiado el nombre de nuestro método a __init__. Ejecutemos nuestro código y veamos si funciona:

 El precio de Fit Medium Health Grill es $ 39.99. 

Nuestro código nos dice con éxito el precio de la parrilla George Foreman.





TypeError: este constructor no acepta argumentos

El error & ldquo; TypeError: object () no toma argumentos & rdquo; aparece como & ldquo; TypeError: este constructor no acepta argumentos & rdquo; en Python 2.x.

Este mensaje nos dice que hemos cometido un error al definir nuestro constructor. Para resolver este problema, asegúrese de escribir el __ init __ () método correctamente y que utiliza la sangría correcta en la clase que está causando el error.




Conclusión

El & ldquo; TypeError: object () toma sin argumentos & rdquo; se genera un error cuando no declaras un método llamado __init__ en una clase que acepta argumentos.

Para resolver este error, revisa tu código para asegurarte de que __init __ ( ) está escrito correctamente. El método debe tener dos guiones bajos a cada lado del palabra & ldquo; init & rdquo ;.

Ahora está listo para corregir este error común de Python como un profesional !





parámetro de objeto de clase python: StackOverflow Questions

Tutorials