在python中调用继承属性

在python中调用继承属性,python,Python,可能重复: 嗨 我试图调用从基类继承的类中的属性,但它不起作用。我想我错过了什么,但是什么? 这是我的密码: class Produkt: def __init__(self,pID,pProdNavn,pNetto): self.__produktId = pID #atributt for produkt nummer self.__produktNavn = pProdNavn #atributt for produkt navn self.__p

可能重复:

嗨 我试图调用从基类继承的类中的属性,但它不起作用。我想我错过了什么,但是什么? 这是我的密码:

class Produkt:
 def __init__(self,pID,pProdNavn,pNetto):
     self.__produktId = pID     #atributt for produkt nummer
     self.__produktNavn = pProdNavn #atributt for produkt navn
     self.__produktNetto = pNetto   #egenskap for nettopris

 def getName(self): #Metode for å finne produktnavnet
    return self.__produktNavn

class Bok(Produkt):
    def __init__(self,pID,pProdNavn,pNetto,pForfatter):
        Produkt.__init__(self,pID,pProdNavn,pNetto)
        self.__produktForfatter = pForfatter  #atributtp for forfatter

def getNet(self):
    return self.__produktNetto
如您所见,我试图调用从Produkt类继承的_productNetto属性

我做错了什么


/Andy

如果在属性名称中不使用双下划线,则效果很好

class Produkt:
 def __init__(self,pID,pProdNavn,pNetto):
     self.produktId = pID     
     self.produktNavn = pProdNavn
     self.produktNetto = pNetto   

 def getName(self): 
    return self.__produktNavn

class Bok(Produkt):
    def __init__(self,pID,pProdNavn,pNetto,pForfatter):
        Produkt.__init__(self,pID,pProdNavn,pNetto)
        self.produktForfatter = pForfatter  

    def getNet(self):
        return self.produktNetto


x = Bok(1, 2, 3, 4)
print x.getNet()
输出:

三,

否则名称会被破坏,它将查找属性_Bok_uproduktnetto。见:


如果在属性名称中不使用双下划线,则效果良好

class Produkt:
 def __init__(self,pID,pProdNavn,pNetto):
     self.produktId = pID     
     self.produktNavn = pProdNavn
     self.produktNetto = pNetto   

 def getName(self): 
    return self.__produktNavn

class Bok(Produkt):
    def __init__(self,pID,pProdNavn,pNetto,pForfatter):
        Produkt.__init__(self,pID,pProdNavn,pNetto)
        self.produktForfatter = pForfatter  

    def getNet(self):
        return self.produktNetto


x = Bok(1, 2, 3, 4)
print x.getNet()
输出:

三,

否则名称会被破坏,它将查找属性_Bok_uproduktnetto。见:


问题是您使用两个前导下划线命名这些成员,这使得它们在该类之外的名称下不可见(请参阅)


如果在两个位置都使用一个下划线重命名这些字段,它将按照您的意愿工作。

问题在于您使用两个前导下划线命名这些成员,这使得它们在该类之外的名称下不可见(请参阅)


如果在两个位置都使用一个下划线重命名这些字段,它将按您的意愿工作。

您对getNet的缩进不正确。尝试时会发生什么情况?到底什么不起作用?您对getNet的缩进不正确。尝试时发生了什么?到底是什么不起作用?