python中如何给子类定义属性
时间: 2023-06-06 07:06:41 浏览: 118
在 Python 中,当一个子类继承自父类时,可以通过以下两种方法为子类定义属性:
1. 直接在子类中定义属性
我们可以在子类的定义中添加新的属性或者重写父类的属性,例如:
```
class Parent():
def __init__(self, a):
self.a = a
class Child(Parent):
def __init__(self, a, b):
super().__init__(a)
self.b = b
c = Child(1, 2)
print(c.a) # 输出 1
print(c.b) # 输出 2
```
在上面的例子中,父类 `Parent` 有一个属性 `a`,子类 `Child` 通过 `super().__init__(a)` 调用父类的 `__init__` 方法初始化其继承的 `a` 属性,同时定义了自己的属性 `b`。
2. 使用 `property` 装饰器
我们也可以在子类中使用 `property` 装饰器,通过重写父类的 `getter` 方法来定义新的属性。例如:
```
class Parent():
def __init__(self, a):
self._a = a
@property
def a(self):
return self._a
class Child(Parent):
def __init__(self, a, b):
super().__init__(a)
self.b = b
@property
def c(self):
return self.a + self.b
c = Child(1, 2)
print(c.a) # 输出 1
print(c.b) # 输出 2
print(c.c) # 输出 3
```
在上面的例子中,父类 `Parent` 定义了一个属性 `_a`,同时使用 `property` 装饰器定义了一个 `getter` 方法 `a`,子类 `Child` 通过 `super().__init__(a)` 调用父类的构造方法初始化其继承的 `_a` 属性,并定义了自己的属性 `b` 和 `c`,其中 `c` 是一个新定义的属性,通过重写父类的 `getter` 方法来定义。