本质上类的相关用法是面向对象语言非常精彩的地方,自己需要阅读别人的代码,因为现在总是写自己的代码,不借鉴别人的代码是很难获得提高的。
本文未成体系,主要面对的是工程上实际需要解决的问题。
1、子类调用父类函数
情况一:子类不重写__init__()方法,实例化子类后,会自动调用父类的__init__()的方法。
情况二:子类重写__init__()方法且不需要调用父类的方法,则子类直接定义自己的__init__()函数,初始化后将不会调用父类的__init__()的方法。
情况三:子类需要重写__init__()方法,且调用父类的方法:
- 若此时使用的python语言版本为python3,可使用super关键词。
class Person(object):
def __init__(self):
self.name = "Tom"
def getName(self):
return self.name
class Student(Person):
def __init__(self):
super(Student, self).__init__()
self.age = 12
def getAge(self):
return self.age
if __name__ == "__main__":
stu = Student()
print stu.getName()
super函数是在python3中引进的新特性,其最大的优点是如果子类继承了多个父类,它只需要使用一次super函数就可以。
2.针对部分程序过于老旧仍处于python2语言版本,此时有经典的父类名.__init__()方法来进行子类对父类相关函数的调用。
class Person(object):
def __init__(self):
self.name = "Tom"
def getName(self):
return self.name
class Student(Person):
def __init__(self):
Person.__init__(self)
self.age = 12
def getAge(self):
return self.age
if __name__ == "__main__":
stu = Student()
print stu.getName()
此方法是一个相当经典的方法,相较于super特性而言较差地点在于子类如果继承较多的类则需要重复的在子类的初始化函数中重复的申明以上继承父类。