# ! / Usr / bin / env Python # - * - coding: - * - UTF-8 "" " @file: _ heredar la relación clase padre y la subclase .py @ E-mail: [email protected] @time : 04/04/2020 12:39a.m. @author: Nobita @Version: 1.0 @Desciption: la relación entre las clases de padres e hijos / Herencia "" " clase de coches (): DEF __init__ (Ser, la marca, modelo, año): Auto .make = la marca self.model = Modelo self.year = año self.meter = 0 DEF get_car_description (Ser): long_name = STR (self.make) + ' ' + Self.model + ' ' + self.year retorno long_name DEF read_meter (Ser): # método de lectura de varios kilómetros Imprimir ( ' Este coche tiene que ' + STR (self.meter) + ' mi ' ) DEF update_meter (Auto , kilometraje): # define un método para modificar varios kilómetros, a varios kilómetros ser modificados posteriormente, a modo de ejemplo no es necesario modificar el valor de una propiedad de la self.meter = kilometraje DEF increment_meter (ser, Miles): # acaba de agregar de varios kilómetros, hacer víbora self.meter + = Miles my_car = coche ( ' china ', ' Audi ' , ' 2010 ' ) Imprimir (my_car.model) Imprimir (my_car.get_car_description () del título ()). # Sintaxis del método Título -> str.title () // devuelve "título" de la cadena, es decir, dijo que todas las palabras se capitalizan para comenzar. my_car.read_meter () my_car.meter = 50 # a modo de ejemplo para hacer un cambio de valores de atributos my_car.read_meter () my_car.update_meter ( 100) # modificada por un método como se ha definido previamente valores de atributo my_car.read_meter () my_car.increment_meter ( 200 es ) my_car.read_meter () de clase de la batería (): DEF la __init__ (Ser, battery_size = 70 ): self.battery_size = battery_size DEF describe_battery (Ser): Imprimir ( ' el coche ' + STR (self.battery_size) + ' capacitancia ' ) DEF la get_Range (Ser): SI self.battery_size == 70 : car_range = 240 elif self.battery_size <= 100 y self.battery_size> = 75 : car_range = 270 MSG = ' el coche puede funcionar km {} ' .formato (car_range) de retorno MSG clase ElectricCar (Car): # crear ElectricCar (vehículo eléctrico) Clase DEF __init__ (Ser, la marca, modelo, año) . super () __init__ (la marca, modelo, año) self.battery = batería () DEF describe_battery (Ser) : Imprimir ( ' atributos específicos de vehículos eléctricos es} { ' .formato (self.battery.battery_size)) DEF read_meter (Ser): # una clase padre entre, sin la ayuda de las subclases; subclase que definen una entre el nombre de la clase padre con el nombre del método, ignorará el método de la clase padre, su esencia. (Método sustituir la clase de los padres) Imprimir ( ' Este método es un método para volver a escribir la clase padre, ignora método read_meter () de la clase padre de entre ' ) my_ele_car = ElectricCar (' EE.UU. ' , ' Baoma ' , ' 2020 ' ) Imprimir (my_ele_car.get_car_description (). Título ()) my_ele_car.read_meter () my_ele_car.describe_battery () my_ele_car.battery.describe_battery () Imprimir (my_ele_car.battery.battery_size) Imprimir (my_ele_car.battery.get_range ()) my_ele_car.battery.battery_size = 80 # hecho a modo de ejemplo cambiando el valor del atributo de impresión (my_ele_car.battery.get_range ()) '' ' super () es una función especial que permite clase padre y la subclase se pueden asociar. Este código permite a la llamada pitón ElectricCar método de la clase padre __init __ (), por lo que esa instancia ElectricCar contiene todas las propiedades de la clase padre. Python método de inicialización de clase es __init __ (), por lo que el método de la clase padre, la inicialización subclase es que, si la clase hijo no implementa __init __ () es llamada para inicializar la inicialización de la clase padre, Si los instrumentos de la clase hijo esta función, esta función tendrá que llamar explícitamente en el __init clase padre __ (), el cual con C ++, Java no, están automáticamente llamar al constructor de la clase padre. '' '