# ! / Usr / bin / env Python # - * - Codificação: UTF-8 - * - "" " @file: _ herdar a relação classe pai e subclasse .py @ E-mail: [email protected] @time : 2020/04/04 00:39 @author: Nobita @Version: 1,0 @Desciption: a relação entre as classes pai e filho / Herança "" " classe Car (): DEF __init__ (Self, a marca, modelo, ano): Auto .make = a marca self.model = Modelo self.year = ano self.meter = 0 DEF get_car_description (Self): long_name = STR (self.make) + ' ' + Self.model + ' ' + self.year retorno long_name DEF read_meter (self): # método de leitura de vários quilómetros Imprimir ( ' Este CAR tem tem ' + STR (self.meter) + ' mi O ' ) DEF update_meter (Self , quilometragem): # define um método para modificar vários quilômetros, vários quilómetros de ser modificados posteriormente, a título de exemplo não precisa modificar o valor de uma propriedade do self.meter = quilometragem DEF increment_meter (Self, Miles): # recém-adicionado de vários quilômetros, fazer víbora self.meter + = Miles my_car = Car ( ' China ', ' Audi ' , ' 2010 ' ) Imprimir (my_car.model) Imprimir (my_car.get_car_description () título ()). # Título sintaxe do método -> str.title () // retorna "título" da cadeia, isto é, ele disse que todas as palavras estão capitalizadas para começar. my_car.read_meter () my_car.meter = 50 # a título de exemplo, para efectuar uma alteração de valores de atributo my_car.read_meter () my_car.update_meter ( 100) # modificado por um método como valores de atributos anteriormente definido my_car.read_meter () my_car.increment_meter ( 200 é ) my_car.read_meter () classe da bateria (): DEF do __init__ (Self, battery_size = 70 ): self.battery_size = battery_size DEF describe_battery (Self): Imprimir ( ' carro ' + STR (self.battery_size) + ' capacitância ' ) DEF o get_Range (Self): IF self.battery_size == 70 : car_range = 240 elif self.battery_size <= 100 e self.battery_size> = 75 : car_range = 270 MSG = ' o carro pode rodar km {} ' .format (car_range) retorno MSG classe ElectricCar (Car): # criar ElectricCar (veículo eléctrico) classe DEF __init__ (Self, a marca, modelo, ano): . Super () __init__ (a marca, modelo, ano) self.battery = Bateria () DEF describe_battery (Self) : Imprimir ( ' atributos específicos de veículos elétricos} é { ' .format (self.battery.battery_size)) DEF read_meter (self): # uma classe pai entre, sem a ajuda de subclasses; subclasse que definem um entre o nome da classe pai com o nome do método, ele irá ignorar o método da classe pai, sua essência. (Método substituir a classe pai) Imprimir ( ' Este método é um método para reescrever a classe principal, ignora método read_meter () da classe principal de entre os ' ) my_ele_car = ElectricCar (' EUA ' , ' 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 # feita a título de exemplo alterando o valor do atributo de impressão (my_ele_car.battery.get_range ()) '' ' Super () é uma função especial que permite classe pai e subclasse pode ser associado. Este código permite que o Python chamada ElectricCar __init método classe pai __ (), de modo que instância ElectricCar contém todas as propriedades da classe pai. Python método de inicialização de classe é __init __ (), então o método da classe pai, a inicialização subclasse é que, se a classe filha não implementa __init __ () é chamado para inicializar a inicialização da classe pai, se os implementos sub-classe esta função, esta função tem que explicitamente chamá-lo em __init da classe pai __ () , que com C ++, Java não, eles são automaticamente chamar o construtor da classe pai. '' '