Python类的继承、重写和私有
一、继承
继承:就是在继承原有类功能的基础上,增加新的功能(属性和方法),形成新的子类。被继承的叫父类。
1、继承基本格式
class 子类名(父类名)
这里多父类可以一起继承给同一个子类。格式如下:
class 子类名(父类名1,父类名2,父类名3,...)
2、继承方法实例
class Box1():def __init__(self,l1,w1,h1):self.length=l1self.width=w1self.height=h1def volume(self):return self.length*self.width*self.heightclass 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.heightreturn 2*rmy_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=l1self.width=w1self.height=h1def volume(self):return self.length*self.width*self.heightclass 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.heightreturn 2*rdef volume(self,num=1):return self.length*self.width*self.height*nummy_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()
Python类的继承、重写和私有相关推荐
- 关于python类的继承正确的说法是_2017美团点评的运维岗校招笔试题,测测你会几题?...
原标题:2017美团点评的运维岗校招笔试题,测测你会几题? 1.数据库:以下哪项不是HASH索引的特征? A MySQL不能确定在两个值之间大约有多少行 B 不能使用hash索引来加速ORDER BY ...
- 一文讲透python类的继承原理,好比调制鸡尾酒
python类继承的原理 python类继承的原理,大家完全可以将其想象为调鸡尾酒,就是电视上调酒师拿着一个杯子甩来甩去的跟扔印度飞饼一样的那种,我们不难发现,调鸡尾酒会用很多的原材料来勾兑(至于严格 ...
- python一个类继承多个类_如何让Python继承多个类?一文读懂Python类的继承
面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过Python类的继承并且在此基础上衍生出让Python继承多个类的方法. 通过Python类的继承创建的新类称为子类或派生类, ...
- Python 类的继承和组合
面向对象的编程带来的主要好处之一是代码的复用,实现这种复用的方法之一是通过继承机制. python中解决代码复用的方式:继承和组合. 1 什么是继承 继承是一种创建类的方法,在python中,一个类可 ...
- python 16.1 继承 重写 supper()方法 多重继承
一.继承 1.功能:继承提高了代码的复用性 ,让类与类之间产生了关系,有了这个关系,才有了多态的特性. 2.形式 class B(A):pass ,创建B类继承A 3.说明:1.在创建类的时候,如 ...
- python 优先级继承_孤荷凌寒自学python第二十二天python类的继承
(完整学习过程屏幕记录视频地址在文末,手写笔记在文末) python中定义的类可以继承自其它类,所谓继承的概念,我的理解 是,就是一个类B继承自类A,意味着类B的内部代码块中就算不写任何代码,类B仍然 ...
- 关于python类的继承正确的说法是_关于python类的继承的一个小坑
我们来看看一个很普通的类的继承: class Model: name = "DNN" def __init__(self, name): self.name = name def ...
- python类的继承关系,python——类和类之间的关系(继承多态)
1.类和类之间的关系有三种:is-a.has-a和use-a关系. is-a关系也叫继承或泛化,比如学生和人的关系.手机和电子产品的关系都属于继承关系. has-a关系通常称之为关联,比如部门和员工的 ...
- python 类的继承,类中的函数调用以及类输入数组
第一部分,类的继承 先给出一个例子: class People(): #定义类,要大写,python 2中要在括号里加如object这个单词def __init__(self,n,a,w): #定义一 ...
- python类与继承person类_关于python中类的继承及self
关于python中类的继承及self 如下,如果调用student类,则可以正常运行,但是如果去掉consumer.__init__(self, fee)中的self,将其改成consumer.__i ...
最新文章
- 世界种业并购史 国际农民丰收节贸易会起底农化巨头构架
- 如何学习Java? 在学习Java的过程中需要掌握哪些技能?
- matlab画孔斯曲面,CAD CAM技术基础:第五讲 孔斯曲面
- HashMap 排序
- MyBatis拦截器实现分页
- [No0000197]Windows用户都应该知道的运行命令
- 锐龙5 3600偷跑 性能直逼酷睿i9-9900K
- NAS个人云存储服务器搭建
- adb 环境变量配置 无效
- 滤芯怎么换 石头机器人_拆开看个究竟,石头扫拖一体机器人T6到底如何?
- 计算机c盘用户里的APPDATA,Windows7系统C盘中的appdata文件夹是否可以删除
- 工控行业什么时候用c语言,工控工程师需要掌握的知识
- MOCTF-WRITE-UP(二)
- 调用第三方api在线生成二维码
- PO模式实现Appium脚本封装
- 剪辑视频怎么学?手把手教你自学视频剪辑
- python机器识别追踪_多目标追踪器:用OpenCV实现多目标追踪(C++/Python)
- Deformable DETR论文翻译
- python测试app性能_App性能测试工具MobilePerformance
- BZOJ1455罗马游戏