Python 类继承(相关知识点)
1,子类继承父类(单继承示例)
解释:子类不重写 __init__,实例化子类时,会自动调用父类定义的 __init__。
案例:
# 类定义
class Father:
# 定义构造方法
def __init__(self, n, a):
self.name = n
self.age = a
print("name: %s" % (self.name))
def speak(self):
print("%s 说: 我 %d 岁。" % (self.name, self.age))
# 单继承示例
class Son(Father):
pass
if __name__ == '__main__':
son = Son('father', 53)
结果:
name: father
2,如果重写了__init__ 时,实例化子类,就不会调用父类已经定义的 __init__:
# 类定义
class Father:
# 定义构造方法
def __init__(self, n, a):
self.name = n
self.age = a
print("name: %s" % (self.name))
def speak(self):
print("%s 说: 我 %d 岁。" % (self.name, self.age))
# 单继承示例
class Son(Father):
def __init__(self, n):
self.name = n
print("son's name: %s" % (self.name))
if __name__ == '__main__':
son = Son('xiaoming')
结果:
son's name: xiaoming
3,子类重写__init__()方法又需要调用父类的方法:使用super关键词。
super(子类,self).__init__(参数1,参数2,....)
super().__init__(参数1, 参数2, ...) # python3新版本写法
class Father(object):
def __init__(self, name):
self.name=name
print ( "name: %s" %( self.name))
def getName(self):
return 'Father ' + self.name
class Son(Father):
def __init__(self, name):
super(Son, self).__init__(name)
print ("hi")
self.name = name
def getName(self):
return 'Son '+self.name
if __name__=='__main__':
son=Son('runoob')
print ( son.getName() )
结果:
name: runoob
hi
Son runoob