Python程序中调用子类时直接修改父类的属性

Python017

Python程序中调用子类时直接修改父类的属性,第1张

在学习类的继承时,被“在子类中调用和修改父类的属性”卡住了。通过在网上查阅资料,大致搞明白了。主要有以下三点:

1. 子类的 __init__ 方法中通过“ <父类名>.__init__(self) ”语句将父类的属性继承过来,见下面示例中标注“#例2”处。

2. 如果要在程序中调用子类时直接通过参数的形式修改父类继承过来的属性,那么子类的 __init__ 方法中需要在self后面跟上要赋值的参数,见下面示例中标注“#例1”处。

3. 即使是通过“ <父类名>.__init__(self) ”语句继续过来的父类的属性,也需要在子类的 __init__ 方法中使用 self.<变量名>=变量值 的方式进行赋值,否则在子类中无法引用变量,见下面示例中标注“#例3”和“#例4”处。

执行结果:

从以上执行结果看,我们通过 y=b(4,5) 方式直接调用子类并给出参数“4,5”,而使用 y.myprint 调用了父类的方法,最后的计算结果是根据子类的参数计算得出的。说明我们在调用子类时直接修改了父类aa和bb的属性。

子类调用父类函数有以下方法:

直接写类名调用

用 super(type, obj).method(arg)方法调用。

在类定义中调用本类的父类方法,可以直接用super().method(arg)

class A:

def method(self, arg):

pass

class B(A):

def method(self, arg):

#A.method(self,arg)# 1

#super(B, self).method(arg)# 2

super().method(arg) # 3