如何使用多重继承获取某些父类属性值

问题描述

我开始学习多重继承,但是我似乎无法从父类获取一些Atribute值。

我有3个类,其中一个继承了另外两个。 我可以打印“ preco_bilhete”属性,但不能打印“ nome”,“ apelido”和“ codigo_voo”属性值!

对不起,我的一些代码是葡萄牙语。

class Pessoa():
  def __init__(self,nome,apelido,idade,cc,nacionalidade):
    self.nome = nome
    self.apelido = apelido
    self.idade = idade
    self.cartaocidadao = cc
    self.nacionalidade = nacionalidade


class Voo():
  def __init__(self,companhia,cod_voo,cod_aviao,data_partida,horario_partida,data_chegada,horario_chegada,aeroporto_partida,terminal_aeroporto_partida,aeroporto_chegada,terminal_aeroporto_chegada,tipo_de_bagagem):
    self.companhia_aerea = companhia
    self.codigo_aviao = cod_aviao
    self.codigo_voo = cod_voo
    seld.data_voo_partida = data_partida
    self.horario_partida = horario_partida
    seld.data_voo_chegada = data_chegada
    self.horario_chegada = horario_chegada
    self.aeroporto_partida = aeroporto_partida
    self.terminal_aeroporto_partida = terminal_aeroporto_partida
    self.aeroporto_chegada = aeroporto_chegada
    self.terminal_aeroporto_chegada = terminal_aeroporto_chegada
    self.tipo_de_bagagem = tipo_de_bagagem


class Comprar_Bilhete(Pessoa,Voo):
  def __init__(self,nacionalidade,tipo_de_bagagem,preco):
    self.preco_bilhete = preco


cliente1 = Comprar_Bilhete("Pedro","figueiredo",49,9876543,"Portuguesa","Easyjet","EJ1011","FT4537","27-08-2020","23:05","28-08-2020","01:45","Humberto Delgado - Lisboa - PT","Terminal 1","Stansted - Hertfordshire - UK","Terminal 3","Bagagem de Porão + Mala de Mão",275.48)

print(cliente1.preco_bilhete)

print(cliente1.nome)
print(cliente1.apelido)
print(cliente1.codigo_voo)

解决方法

由于它是多重继承,因此这里的类Comprar_Bilhete(Pessoa,Voo)继承了两个类PessoaVoo。当一个类继承另一个类时,它也继承了它的变量和函数(因为默认情况下,这两个类的访问级别均为public)。

您只能打印变量preco_bilhete的值,因为它是在基类-Comprar_Bilhete中唯一被初始化的变量。为了能够在打印其他三个派生变量(即nomeapelidocodigo_voo时获得一个值,还需要传递值以对其进行初始化。

这似乎可以解决您遇到的错误:

class Comprar_Bilhete(Pessoa,Voo):
  def __init__(self,nome,apelido,idade,cc,nacionalidade,companhia,cod_voo,cod_aviao,data_partida,horario_partida,data_chegada,horario_chegada,aeroporto_partida,terminal_aeroporto_partida,aeroporto_chegada,terminal_aeroporto_chegada,tipo_de_bagagem,preco):
    self.preco_bilhete = preco
    self.nome = nome
    self.apelido =apelido
    self.codigo_voo = cod_voo