python-supper方法用法-在子类中调用父类方法
python-supper方法用法-在子类中调用父类方法
Python中使用super方法实现在子类中调用父类方法
在python中新创建的子类会自动继承父类的所有信息,同时子类中重写某个方法也可以覆盖父类原有的方法。例如:在子类中重新定义__init__
方法,那么子类中的__init__
方法将会覆盖掉从父类继承的__init__
.例如下面的代码:
1 | class Person(): |
运行结果是这样的,可以看到在Student
这个类中__init__
已经覆盖了它的父类中的__init__
方法。
1 | DaMing is 28 years old. |
super方法的使用
那如果想要在子类中调用父类中的初始方法应该怎么办呢?可以直接想到的解决方法就是我直接在子类中用父类的名称去调用它的方法不就好了,比如说在Student
类中直接写Person.__init__()
,这样做的确可行但是如果哪天修改了父类的名称那子类中对应的也需要做相应的修改不便于代码的维护。为了解决这个问题就要用到supper()
这个方法了。我们改写一下Student
这个类。
1 | class Student(Person): |
上面的第3行代码super().__init__(name,age)
实际上做了这样几件事情。
- 通过
super()
方法获取了父类person的定义。 - 子类中的
__init__
调用了Person.__init__()
方法。它会自动的将self
参数传递给父类,或者也可以指定参数super(cls,inst)
,cls为类,inst为类实例,然后传入其余参数即可。
python-supper方法用法-在子类中调用父类方法