Python学习13之类(2)继承

引入:我们对某一个类定义了一些属性和方法后,如果想添加新的属性或方法,有两种方法,第一种就是对类直接进行改造,但是有些自定义类已经被软件项目所使用,不允许直接修改类原始代码。或者有些第三方提供的类没有提供原始代码(类模块被编译了),于是就有了第二种新的方法-à继承。

    定义:在继承原有类功能的基础上,增加新的功能(属性或者方法),形成新的子类,被继承的叫父类。

子类可以使用父类定义的内容或者行为等

继承的实现:

   --父类,基类,超类:能继承的类

   --子类:有继承行为的类

所有类都必须有一个父类,如果没有,默认为是object的子类

子类可以有多个父类

 

继承的格式:class 子类名(父类名)

 

class Person():
    name="Wang"
   
age=0

class Teacher(Person):
    pass

t=Teacher()
print(t.name)

 

issubclass如何检测是否是子类

可以用来检测两个类的父子关系

Issubclass(A,B):A是否是B的子类

 

构造函数的继承:构造函数默认继承

class Person():
    def __init__(self,name,age):
        print("Person=({},{})".format(name,age))

class Teacher(Person):
    pass

t=Teacher('wsx',22)

 

继承有以下几个注意点:子类可以继承多个父类。

                      一个父类可以有多个子类。

                      每个子类必须有一个父类。

                      继承可以多层级继承,如Box1是父类,Box2是Box1的子类,Box3是Box2的子类……

 

#父类
class Box1():
    '''
   
求立方体的类
    '''
   
def __init__(self,length1,width1,height1):
        self.length=length1
        self.width=width1
        self.height=height1
    def volume(self):
        return self.length*self.width*self.height
#子类--Box2
class Box2(Box1):
    def __init__(self,length1,width1,height1):  #子类重新定义__init__函数(需要照抄父类init函数的参数)
       
super().__init__(length1,width1,height1)  #super实现父类和子类的关联
       
self.color='white'
       
self.material='paper'
       
self.type='fish'
   
def area(self):
        res=self.height*self.width+self.height*self.length+self.width*self.length
        return res*2
#子类实例化
my_box2=Box2(10,20,30)
print(my_box2.volume())
print(my_box2.area())

 

重写方法

当父类的方法满足不了实际需求的时候,可以在子类中重写方法。

#父类
class Box1():
    '''
   
求立方体的类
    '''
   
def __init__(self,length1,width1,height1):
        self.length=length1
        self.width=width1
        self.height=height1
    def volume(self):
        return self.length*self.width*self.height
#子类--Box2
class Box2(Box1):
    def __init__(self,length1,width1,height1):  #子类重新定义__init__函数(需要照抄父类init函数的参数)
       
super().__init__(length1,width1,height1)  #super实现父类和子类的关联
       
self.color='white'
       
self.material='paper'
       
self.type='fish'
   
def area(self):
        res=self.height*self.width+self.height*self.length+self.width*self.length
        return res*2
    def volume(self,num): #重写volume方法
       
return self.length*self.width*self.height*num
#子类实例化
my_box2=Box2(10,20,30)
print("5个立方体的体积是"+str(my_box2.volume(5)))

posted @ 2020-03-05 21:14  程序员王不错  阅读(185)  评论(0)    收藏  举报