在python类的继承中,父类中的变量,如new_xyz收npoint值的影响,如果有子类继承该父类,并给npoint变量在子类中赋值,那我new_xyz的值会在子类中因为npoint的改变为改变吗
时间: 2023-06-27 08:05:34 浏览: 72
浅谈Python中的继承
在Python类的继承中,如果一个子类继承了父类中的变量npoint并对其进行赋值,那么父类中的new_xyz的值不会因为npoint的改变而改变。这是因为,子类中对npoint的赋值只会影响子类自身的属性,而不会影响父类中的属性。如果你想要在子类中改变父类的属性,可以通过调用父类的方法来实现。例如,在子类中可以定义一个方法,该方法调用父类的方法并传递新的值,从而改变父类中的属性值。以下是一个示例代码:
```python
class Parent:
def __init__(self, npoint):
self.npoint = npoint
def update_new_xyz(self):
self.new_xyz = self.npoint * 10
class Child(Parent):
def __init__(self, npoint):
super().__init__(npoint)
self.npoint = 20
def update_parent_npoint(self, new_val):
self.npoint = new_val
super().update_new_xyz()
c = Child(10)
print(c.npoint) # 输出 20
c.update_parent_npoint(30)
print(c.npoint) # 输出 30
print(c.new_xyz) # 输出 300
```
在这个例子中,父类`Parent`有一个属性`npoint`和一个方法`update_new_xyz`,该方法根据`npoint`计算属性`new_xyz`。子类`Child`继承了`Parent`,并在自己的`__init__`方法中将`npoint`的值设置为20。在子类中,还定义了一个`update_parent_npoint`方法,该方法会更新`npoint`的值,并调用父类的`update_new_xyz`方法来重新计算`new_xyz`的值。通过这种方式,子类就能够改变父类的属性值,并且更新依赖于该属性的其他属性值。
阅读全文