首页 > 解决方案 > 在 Python 中从超类继承到子类

问题描述

我有一个超类,它具有一些类属性,例如:

class Config(object):    
    LENGTH = 1
    BREADTH = 3

现在,我创建了一个子类,它将覆盖父类属性。

 class Sub1(Config):
     def __init__():
        self.LENGTH = 200
        self.BREADTH = 100
        self.AREA = self.LENGTH * self.BREADTH 

现在我需要编写另一个子类来覆盖第一个子类的值。在这里,我应该从父类 Config 继承还是我可以覆盖子类本身的值并更改它。

class Sub2(Sub1):
   self.AREA_UPDATED = self.AREA + 20

这是行不通的。

class Sub2(Config):
    self.LENGTH = "efg"
    self.BREADTH = 100
    self.AREA = self.LENGTH * self.BREADTH
    self.AREA_UPDATED = self.AREA + 20

这行得通。我在概念上做错了什么,是父类只能被继承吗?好心劝告。

谢谢

标签: pythonoop

解决方案


您不能selfclass范围内使用。您应该像这样使用变量名称:

class Sub2(Config):
    LENGTH = "efg"
    BREADTH = 100
    AREA = LENGTH * BREADTH
    AREA_UPDATED = AREA + 20

因为这样你将覆盖类属性,而不仅仅是实例属性,就像你在__init__.

从你那里继承Sub1可以做同样的事情:

class Sub1(Config):
    LENGTH = 200
    BREADTH = 100
    AREA = LENGTH * BREADTH 

class Sub2(Sub1):
    AREA_UPDATED = Sub1.AREA + 20

推荐阅读