1、概述
类是用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
程序举例:
class test():
def __init__(self,one,two,three):
self.one=one
self.two=two
self.three=three
def add(self):
SUM=self.one+self.two+self.three
return SUM
if __name__ == '__main__':
print(test(1,2,3).add())
>>>6
要点:
1、类的方法必须包含参数self,且为第一个参数。
2、_init_()可以包含参数,之后在类的实例化时设定参数值。
3、类的方法即定义一个函数(def),在之后的类调用时直接引用即可。
2、类的继承
2.1、单继承
程序举例:
class father():
def __init__(self,index_1,index_2,index_3):
self.index_1=index_1
self.index_2=index_2
self.index_3=index_3
def output(self):
pass
class son_1(father):
def __init__(self,index_1,index_2,index_3,index_4):
father.__init__(self,index_1,index_2,index_3)
self.index_4=index_4
def outPUT(self):
print('the first number is %d,the forth number is %d'%(self.index_1,self.index_4))
if __name__ == '__main__':
son_1(1,2,3,4).outPUT()
>>>the first number is 1,the forth number is 4
要点:
子类有_init_()函数,父类的_init_()未调用,则默认调用子类的_init_()函数。
2.2、多继承
程序举例:
class father():
def __init__(self,index_1,index_2,index_3):
self.index_1=index_1
self.index_2=index_2
self.index_3=index_3
def output(self):
print('the first number is %d \nthe twice number is %d\nthe third number is %d'%(self.index_1,self.index_2,self.index_3))
class son_1(father):
def __init__(self,index_1,index_2,index_3,index_4):
father.__init__(self,index_1,index_2,index_3)
self.index_4=index_4
def outPUT(self):
print('the first number is %d \nthe forth number is %d'%(self.index_1,self.index_4))
class son_2(son_1,father):
def __init__(self,index_1,index_2,index_3,index_4,index_5):
self.index_5=index_5
father.__init__(self, index_1, index_2, index_3)
son_1.__init__(self, index_1, index_2, index_3,index_4)
def OUTput(self):
print('the third number is %d\nthe forth number is %d\nthe fifth number is %d'%(self.index_3,self.index_4,self.index_5))
if __name__ == '__main__':
print('子类调用自身函数:')
son_2(8,6,4,5,2).OUTput()
print('子类调用一个父类的函数:')
son_2(4,6,7,9,2).outPUT()
print('子类调用另一个父类的函数:')
son_2(7,9,5,7,6).output()
>>>子类调用自身函数:
the third number is 4
the forth number is 5
the fifth number is 2
子类调用一个父类的函数:
the first number is 4
the forth number is 9
子类调用另一个父类的函数:
the first number is 7
the twice number is 9
the third number is 5
要点:
若子类未定义_init_方法时,程序会执行调用的首个基类的_init_方法。
2.3、方法重写
class father():
def __init__(self,index_1):
self.index_1=index_1
def way(self):
print ("father's number is %d"%self.index_1)
class son_1(father):
def __init__(self,index_1,index_2):
self.index_2=index_2
father.__init__(self, index_1)
def way(self):
print ("father's number is %d\nson_1's number is %d"%(self.index_1,self.index_2))
class son_2(son_1):
def __init__(self,index_1,index_2,index_3):
self.index_3=index_3
son_1.__init__(self, index_1, index_2)
def way(self):
print ("father's number is %d\nson_1's number is %d\nson_2's number is %d"%(self.index_1,self.index_2,self.index_3))
if __name__ == '__main__':
print('用子类son_1的函数重写父类father:')
example_2=son_1(8,6)
example_2.way()
print('用子类son_2的函数重写父类son_1:')
example_1=son_2(8,6,4)
example_1.way()
>>>用子类son_1的函数重写父类father:
father's number is 8
son_1's number is 6
用子类son_2的函数重写父类son_1:
father's number is 8
son_1's number is 6
son_2's number is 4
要点:
当父类的函数不能满足需要时,可以在子类定义一个相同的函数对父类的函数进行重写。