Python: Почему консоль показывает мне ошибку приема аргументов?

#python #class #subclass

#python #класс #подкласс

Вопрос:

я новый программист Python, и я практикую объектное программирование .. и у меня есть следующий код:

 class Vehiculos():

def __int__(self, marca1, modelo1):

    self.marca = marca1
    self.modelo = modelo1
    self.enmarcha = False
    self.acelera = False
    self.frena = False

def arrancar(self):

    self.enmarcha = True

def acelerar(self):

    self.acelera = True

def frenar(self):

    self.frena = True

def estado(self):

    print("La marca es:", self.marca1)
    print("El modelo es: ", self.modelo1)

class Moto(Vehiculos):
pass

mimoto = Moto("BMW", "CR1")
mimoto.estado()
  

и консоль показывает мне:

 Traceback (most recent call last):
File "herencia_new_file.py", line 31, in <module>
mimoto = Moto("BMW", "CR1")
TypeError: Moto() takes no arguments
  

су, мне интересно, что не так? потому что я видел в курсе, что код и преподаватель работают идеально

Ответ №1:

Во-первых, у вас есть опечатка в __int__ (должна быть __init__ ), также у вас есть другая ошибка в estado методе, вы обращаетесь к атрибутам marca1 и modelo1 , когда вы должны обращаться к marca и modelo :

 class Vehiculos():
  def __init__(self, marca1, modelo1):
    self.marca = marca1
    self.modelo = modelo1
    self.enmarcha = False
    self.acelera = False
    self.frena = False

  def arrancar(self):
    self.enmarcha = True

  def acelerar(self):
    self.acelera = True

  def frenar(self):
    self.frena = True

  def estado(self):
    print("La marca es:", self.marca)
    print("El modelo es: ", self.modelo)

class Moto(Vehiculos):
  pass

mimoto = Moto("BMW", "CR1")
mimoto.estado()
"""
La marca es: BMW
El modelo es:  CR1
"""
  

Ответ №2:

Ошибка в том, что вы изначально написали __int__ вместо __init__ .

В Python мы используем __init__() функцию-конструктор при создании объекта класса. Эта функция позволяет передавать аргументы объекту класса. Если вы неправильно укажете __init__ функцию, вы столкнетесь с ошибкой: TypeError: object() takes no arguments.

Чтобы устранить эту ошибку, вам нужно убедиться, что вы пишете __init__ функцию с двумя символами подчеркивания по обе стороны от init и используете правильные отступы во всей вашей программе.