python - 在 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
这行得通。我在概念上做错了什么,是父类只能被继承吗?好心劝告。
谢谢
解决方案
您不能self
在class
范围内使用。您应该像这样使用变量名称:
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