类改造问题

class Box1():               #类定义
    '''求立方体的类'''
    def  __init__(self,length1,width1,heigth1,c1=0):      #传递参数的保留函数__init__
        self.length=length1         #长数据变量
        self.width=width1           #宽数据变量
        self.height=heigth1         #高数据变量
    def volume(self):
        return self.length*self.width*self.height
#=================================================
class Box2(Box1):                                   #继承Box1定义子类Box2
    def __init__(self,length1,width1,heigth1):      #子类重新定义__init__
        super().__init__(length1,width1,heigth1)    #super实现父类与子类的联系
        self.color='white'                          #增加颜色属性
        self.material='paper'                       #增加材料属性
        self.type='fish'                            #增加类型属性
    def area(self):                                 #增加表面积函数
        re=self.length*self.width+self.length*self.height+self.width*self.height
        return re*2
#===============================================    主程序调用类及实例
my_box2=Box2(10,10,10)                              #通过子Box2创建my_box2实例
print('立方体的体积是%d'%(my_box2.volume()))
print('立方体的表面积是%d' %(my_box2.area()))
print('颜色是%s,材料%s,类型%s'%(my_box2.color,my_box2.material,my_box2.type))

执行结果

立方体的体积是1000
立方体的表面积是600
颜色是white,材料paper,类型fish

继承使用方法

1)子类名声明时引入父类名,class Box2(Box1):
2)重新定义子类的__init__函数时,若父__init__函数有参数,则照抄父函数的的参数
3)在子类__init__里提供super函数,实现父类与子类的关联,若父类有参数,需要同步参数(self除外),super().init(length1,width1,heigth1)
4)可以在子类里增加新属性定义 self.color='white'
5)可以在子类里增加新方法定义 def area(self):

重写方法

class Box2(Box1):                                   #继承Box1定义子类Box2
    def __init__(self,length1,width1,heigth1):      #子类重新定义__init__
        super().__init__(length1,width1,heigth1)    #super实现父类与子类的联系
        self.color='white'                          #增加颜色属性
        self.material='paper'                       #增加材料属性
        self.type='fish'                            #增加类型属性
    def area(self):                                 #增加表面积函数
        re=self.length*self.width+self.length*self.height+self.width*self.height
        return re*2
#-----------------此处重写定义volume
    def volume(self,num=1):                         #要求函数名称与父类的名称一致    
        return self.length*self.width*self.height*num
my_box2=Box2(10,10,10)  
print('6个立方体的体积是%d'%(my_box2.volume(6)))     #6000
posted @ 2020-11-15 15:44  17。  阅读(63)  评论(0)    收藏  举报