如何在子类中访问父类的属性?有关使用super()的疑问

时间:2019-06-29 18:43:09

标签: python oop super

这是父类为Apparel的代码段。服装具有属性__price。接下来,我定义一个从Cotton类继承的类Cotton。 我使用super()调用父方法。

class Apparel:
    def __init__(self,price,item_type):
        self.__price=price
        self.__item_type=item_type
    def calculate_price(self):
        self.__price=self.__price+0.05*self.__price

棉花类的摘要:

class Cotton(Apparel):
    def __init__(self,price,discount):
        self.__discount= discount
        super().__init__(price,"Cotton")
    def calculate_price(self):
        super().calculate_price()
        self.__price= self.__price-self.__discount
    def get_price(self):
        return self.__price

已经使用super()调用了父方法,我希望该特定方法中的子级可以使用父级的属性'__price'。但是,我在运行此错误:

c1= Cotton(25000,2500)
c1.calculate_price()
print (c1.get_price())

并且,错误如下: AttributeError:“棉花”对象没有属性“ _Cotton__price”

如果由于名称重整,如何同时保持属性“ super private”,以访问子类中的属性。 我尝试了几种变体,例如尝试使用Apparel .__ price而不是self .__ price在Cotton类中访问__price,但仍然无法正常工作。试图检查某个地方是否很傻,仍然无法弄清楚。将不胜感激。谢谢。

0 个答案:

没有答案