Tengo una duda sobre este método... Y es... que hace realmente este método, me podríais poner un ejemplo de una clase utilizando este método y una clase sin este método para poder ver la diferencia...
Y otra cosa, si yo hago esto
class coche():
def __init__(self, rueda, pintura):
self.rueda = rueda
self.pintura = pintura
def imprimir(self):
self.rueda = input("que tipo de ruedas tienes > ")
self.pintura = input("color del coche > ")
COCHE = coche()
COCHE.imprimir()
Porque en la parte COCHE = coche() me pide los valores de rueda y pintura si ya lo defino en "def imprimir()", ¿no hay manera de que no me los pida?, es que hay veces que he tenido errores por el valor inicial que le doy
Gracias por responder! ;D
sin init
class Coche():
def imprimir(self):
self.rueda = input("que tipo de ruedas tienes > ")
self.pintura = input("color del coche > ")
print("las rueadas son", self.rueda, "y la pintura es", self.pintura
objeto = Coche()
con init
class Coche():
def __init__(self, kilometro_por_litro):
self.kpl = kilometro_por_litro
def imprimir(self):
self.litros = input("cuantos litros tienes? > ")
print("puedes rodar", self.kpl/self.litros, "kilometos mas"
objeto = Coche(21)
el paso de parametros en init lo usas principalmente cuando son cosas que requieren saberse antes que nada pase
por buena practica las clases empiezan con mayusculas, no usas variables con mayusculas exclusivamente (usualmente se reservan para las constantes) y NO usas el mismo nombre en una clase y una variable, eso lleva a confusion...
Cita de: engel lex en 18 Noviembre 2019, 11:04 AM
sin init
class Coche():
def imprimir(self):
self.rueda = input("que tipo de ruedas tienes > ")
self.pintura = input("color del coche > ")
print("las rueadas son", self.rueda, "y la pintura es", self.pintura
objeto = Coche()
con init
class Coche():
def __init__(self, kilometro_por_litro):
self.kpl = kilometro_por_litro
def imprimir(self):
self.litros = input("cuantos litros tienes? > ")
print("puedes rodar", self.kpl/self.litros, "kilometos mas"
objeto = Coche(21)
el paso de parametros en init lo usas principalmente cuando son cosas que requieren saberse antes que nada pase
por buena practica las clases empiezan con mayusculas, no usas variables con mayusculas exclusivamente (usualmente se reservan para las constantes) y NO usas el mismo nombre en una clase y una variable, eso lleva a confusion...
Muchas gracias por responder!
Otra duda que me ha aparecido es... si uso el método "self" este se define en todo el documento, solo entre clases, o solo dentro los def de la clase donde lo defino?
self es "yo mismo" basicamente, el self se extiende dentro de todo el objeto, pero nada mas
es decir, se vuelve una propiedad del objeto y puedes accederlo por ejemplo en el caso de la clase anterior
objeto = Coche()
objeto.imprimir()
# aqui la interaccion
print("el coche tiene ruedas:", objeto.rueda)
ojo usualmente para evitar conflictos y errores declaras las propiedades de antemano por ejemplo
class Coche():
rueda = ""
pintura = ""
def imprimir(self):
self.rueda = input("que tipo de ruedas tienes > ")
self.pintura = input("color del coche > ")
print("las rueadas son", self.rueda, "y la pintura es", self.pintura
no es tan buena idea declararlo "en caliente" porque si requieres la propiedad luego, puedes tener errores
en ese caso no requieren self porque estás declarandolo como parte del objeto directamente (dentro de los def si necesitas self, porque los def declaran variables solo dentro de su scope)