I. Introdução
1, construir um novo tipo de herança é sob forma de classe, classe pai pode ser chamado de uma classe base ou superclasse, a nova classe pode ser chamado de subclasse ou classe derivada, subclasse pode herdar as propriedades da classe pai.
2, a classe principal pode ser herdada pelas subclasses, as subclasses pode herdar também uma pluralidade de classes pai.
3, em python3, a mais alta classe ancestral herda o padrão built-in de classe de objeto.
4, em python2, a mais alta classe ancestral não herda padrão, desta vez, a classe e suas classes descendentes são classes clássicas. A menos que explicitamente mais elevada classe pai ancestral é o objeto interno, que a classe e seus descendentes são a nova classe para classe.
classe bisavô: X = 111 classe Avô (bisavô): Passe classe Pai (avô): Passe classe Filho (Pai): Passe son_obj_1 = Filho () Imprimir (. bisavô __bases__ ) # para o resultado python3 (<class 'objeto'>, ) resultado python2 () Imprimir (son_obj_1.x) Imprimir (Son.x) Imprimir (Father.x) Imprimir (Grandfather.x) # Os resultados acima são 111
Em segundo lugar, a herança múltipla: a classe herda de subclasse mais de um pai
1, as vantagens de: subclasse pode utilizar as propriedades de cada classe pai, melhorar a utilização do código
2. Desvantagens:
① de pensar logicamente, esta criança pertence à classe se define uma "categoria" tornou-se turva.
Legibilidade e escalabilidade ② código pior, pode levar a um "problema de diamante."
3, se inevitavelmente requer o uso de maneira herança múltipla, método deve Mixins.
Em terceiro lugar, redundância de código herança resolve
class Employee: Sexo = ' MACHO ' # atributos subclasse total de dados DEF o __init__ (Self, nome, idade): # uma instância de subclasse objeto de comum atribui a self.name = nome self.age = Idade DEF SHOW_NAME (self): # há uma função subclasse de impressão ( ' esta é uma equipe} { ' .format (self.name)) classe Worker (o funcionário): DEF work_time (Self, Time): # específicos de subclasse Trabalhador apresenta Imprimir ( ' {} horas de hoje da seguinte forma: } { ' .format (a self.name, Time)) classe Manager (o empregado): DEF do __init__ (Self, nome, idade, habilidade): . Employee o __init__ (Self, nome, idade) # quando instância objeto de subclasse Manager, se o pai tem referências diretas self.skill = habilidade # pai não é, em seguida, definível DEF work_target (self, alvo): # específica Gestor subclasse apresenta Imprimir ( ' {} indicadores mês: {} ' .format (a self.name, alvo)) worker_obj_1 = Operário ( ' Tom ' , ' 18 é ' ) worker_obj_1.show_name () worker_obj_1.work_time ( ' 8H ') Manager_obj_1 = Manager ( ' janeiro ' , ' 20 ' , ' dança ' ) manager_obj_1.show_name () manager_obj_1.work_target ( ' 10 Yi ' ) # resultado '' ' Este é o tom empregado tom ao trabalho hoje: 8h Esta é pessoal janeiro indicadores jan este mês: 1 bilhão '' '
Em quarto lugar, a ordem de busca propriedade
1, o caso de herança simples: porque é uma relação linear, basta seguir antiguidade pode encontrar pequeno a grande porte.
2, múltiplas situações de herança: