下面我来详细讲解一下python类中super()的使用解析。
什么是super()函数
在python中,使用 super()
函数可以让我们在子类中调用父类的方法和属性,实现多重继承时也可以保证实例化调用的先后顺序。
简单来说,super()
函数是用来调用父类中定义的方法的工具,它可以帮助我们避免硬编码(Hard Coding),同时提高代码的重用性。
super()函数的调用方式
super()
函数的调用方式有两种:经典类和新式类。
经典类
经典类指的是在python2中没有显式继承 object
类的类,使用 super()
函数也要使用 super([type[, object-or-type]])
形式的参数。其中 type
是当前类对象(即继承下来的类),object-or-type
是当前实例化对象(即最终调用的类)。
下面是一个简单的经典类示例:
class Parent:
def __init__(self, name):
self.name = name
def sayHello(self):
print("Hello,", self.name)
class Child(Parent):
def sayHello(self):
super(Child, self).sayHello()
child = Child('Tom')
child.sayHello()
输出结果:
Hello, Tom
新式类
新式类的定义方法是在类定义中继承 object
类,使用 super([type[, object-or-type]])
形式的参数是绝对不必要的。
下面是一个简单的新式类示例:
class Parent(object):
def __init__(self, name):
self.name = name
def sayHello(self):
print("Hello,", self.name)
class Child(Parent):
def sayHello(self):
super().sayHello()
child = Child('Tom')
child.sayHello()
输出结果:
Hello, Tom
super()函数的使用场景
super()
函数最典型的使用场景是在进行多重继承时,调用继承链上的其他类中的方法或属性。
下面是一个多重继承的示例:
class Parent1(object):
def sayHello(self):
print("Hello from Parent1")
class Parent2(object):
def sayHello(self):
print("Hello from Parent2")
class Child(Parent1, Parent2):
def sayHello(self):
super().sayHello()
child = Child()
child.sayHello()
输出结果:
Hello from Parent1
可以看到,由于 Child
类继承自 Parent1
和 Parent2
两个类,但又同时都定义了 sayHello()
方法,因此需要通过 super()
函数来调用父类方法,以保证继承链上各个类定义的方法都得以执行。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python类中super() 的使用解析 - Python技术站