python 基础 5.2 类的继承
一. 类的继承
继承,顾名思议就知道是它的意思,举个例子说明,你现在有一个现有的A类,现在需要写一个B类,但是B类是A类的特殊版,我们就可以使用继承,B类继承A类时,B类会自动获得A类的所有属性和方法,A类称为父类,B类称为子类,子类除了继承父类的所有属性和方法,还可以自定义自己的属性和方法。大大增加了代码的复用性。
在本章中,我们可以继承object 类,object类是所有类的父类,所有的类都默认继承object类,它是一个超级类,如果不写,默认继承object。
继承类的格式:
class A(父类):
。。。。
1》继承,格式
#/usr/bin/python
#coding=utf-8
#@Time :2017/11/6 9:25
#@Auther :liuzhenchuan
#@File :类的继承.py
# A类
class A(object):
pass
#继承,只要把A 写在B 的括号里就是继承,B继承A里边的方法,先去B找,B里边没有方法在去A找
class B(A):
pass
示例:
###子类继承。子类继承父类,从子类调用方法时,先从子类自己查找,如果子类自己有就调用自己的,如果子类没有在从父类调用那个
class parent(object):
name = 'parent'
sex = 'F'
def __init__(self):
print ('my name is {0}'.format(self.name))
def get_name(self):
return self.name
def get_sex(self):
return self.sex
print '##################打印父类方法##################'
a = parent()
print a.get_name()
print a.get_sex()
#定义子类child继承父类
class child(parent):
name = 'child'
age = '10'
#默认方法__init__()
def __init__(self):
print ('my name is {0}'.format(self.name))
#定义子类的方法,先从子类自己查找,子类有这个方法的话直接调用,没有的话去父类找
def get_age(self):
return self.age
#子类child 中没有get_sex 方法,从父类找
def get_sex(self):
return self.sex
#定义子类方法
def hello(self):
return 'hello world'
print '##################打印子类方法######################'
#实例化子类
b = child()
print b.get_age()
print b.get_sex()
print b.get_name()
print b.hello()
>>>
##################打印父类方法##################
my name is parent
parent
F
##################打印子类方法######################
my name is child
10
F
child
hello world
二.多继承
1》 python 的类支持多继承,而java没有多继承,但是可以有多接口的实现python的多继承很简单,下面我们来看一下多继承的格式:
class A: #定义类A
.....................
class B: #定义类B
class C(A,B): #继承类A和B
...............................
多继承其实需要在父类的位置,直接写多个父类就可以,然后用“,”分开就可以了,C 类就同时继承了A类和B类。
2》python 类的继承注意事项:
a. 在继承中,类的构造(__init__方法),不会自动调用,它需要在子类的构造中亲自调用。也就是子类需要自己写自己的__init()__方法。
b. python总是首先调用子类中的方法,如果 子类中没有找到,才回去父类中查找。
3》多继承格式
class A(object):
pass
#继承,只要把A 写在B 的括号里就是继承,B继承A里边的方法,先去B找,B里边没有方法在去A找
class B(object):
pass
#多继承,就是在C类里边写两个
class C(A,B):
pass
多继承实例:
1 class parent(object): 2 name = 'parent' 3 sex = 'F' 4 coller = 'yellow' 5 language = 'chinese' 6 def __init__(self): 7 print 'my name is {0}'.format(self.name) 8 def get_sex(self): 9 return self.name 10 a = parent() 11 a.get_sex() 12 print '#'*15 13 14 class child(object): 15 name = 'child' 16 coller = 'yellow' 17 def __init__(self): 18 print 'my name is {0}'.format(self.name) 19 def get_coller(self): 20 return self.coller 21 b = child() 22 print b.get_coller() 23 print '#'*15 24 25 class grandson(parent,child): 26 name = 'grandson' 27 def __init__(self): 28 print 'my name is {0}'.format(self.name) 29 def get_coller(self): 30 return self.coller 31 def get_language(self): 32 return self.language 33 c = grandson() 34 print c.get_coller() 35 print c.get_language()
运行如下:
>>>
my name is parent
###############
my name is child
yellow
###############
my name is grandson
yellow
chinese