Python类的继承、重写和私有

一、继承
继承:就是在继承原有类功能的基础上,增加新的功能(属性和方法),形成新的子类。被继承的叫父类。
1、继承基本格式

class 子类名(父类名)

这里多父类可以一起继承给同一个子类。格式如下:

class 子类名(父类名1,父类名2,父类名3,...)

2、继承方法实例

class Box1():
    def __init__(self,l1,w1,h1):
        self.length=l1
        self.width=w1
        self.height=h1

    def volume(self):
        return self.length*self.width*self.height

class Box2(Box1):
    def __init__(self,l1,w1,h1):
        super().__init__(l1,w1,h1)   #super实现父类和子类的关联
        self.color='white'
        self.material='paper'
        self.type='fish'           #增加属性
    def area(self):
        r=self.length*self.width+self.width*self.height+self.length+self.height
        return 2*r

my_box=Box2(10,10,10)
print('立方体体积是%d'%(my_box.volume()))
print('立方体表面积是%d'%(my_box.area()))
print('Box颜色%s,材质%s,类型%s'%(my_box.color,my_box.material,my_box.type))

# 立方体体积是1000
# 立方体表面积是440
# Box颜色white,材质paper,类型fish

1)在子类名声明时,引入父类名
2)重新定义子类的__init__函数,若父类__init__函数有参数,则照抄父类函数的参数。
3)在子类__init__函数里提供super函数,实现父类与子类的关联,若父类有参数,需要同步参数(self除外)
4)可以在子类中增加新属性定义
5)可以在子类中增加新方法定义

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

二、重写方法
当发现父类的方法满足不了实际需要时,可以在子类中重写方法。
如下:在子类中重写了volume()方法

class Box1():
    def __init__(self,l1,w1,h1):
        self.length=l1
        self.width=w1
        self.height=h1

    def volume(self):
        return self.length*self.width*self.height

class Box2(Box1):
    def __init__(self,l1,w1,h1):
        super().__init__(l1,w1,h1)   #super实现父类和子类的关联
        self.color='white'
        self.material='paper'
        self.type='fish'           #增加属性
    def area(self):
        r=self.length*self.width+self.width*self.height+self.length+self.height
        return 2*r
    def volume(self,num=1):
        return self.length*self.width*self.height*num

my_box=Box2(10,10,10)
print('立方体体积是%d'%(my_box.volume()))
print('立方体表面积是%d'%(my_box.area()))
print('Box颜色%s,材质%s,类型%s'%(my_box.color,my_box.material,my_box.type))
print("5个立方体的体积为%d"%(my_box.volume(5)))
# 立方体体积是1000
# 立方体表面积是440
# Box颜色white,材质paper,类型fish
# 5个立方体的体积为5000

三、私有
有些人希望设计的类内有些变量或函数只允许这个类自身访问。如__init__函数,本身用于类的初始化调用,没有被实例调用的必要。
为了让类定义的变量或函数变成私有的,只要在它的名字前加上双下划线即可__

class Tprivate():
    def __init__(self):
        self.__say='yes'  #在实例中,__say属性实例将无法看到
    def p(self):
        print(self.__say)
    def __p1(self):
        print(self.__say)   #在实例中,__p1()方法将无法看到

s=Tprivate()
s.p()
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值