#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
и используете правильные отступы во всей вашей программе.