python学习-继承
# 继承
# 你的是我的,我的还是我的
class Animal:
def __init__(self,name,private_v1):
self.name = name
self._private_v1 = private_v1
self.__private_v2 = "private_really"
def run(self):
print("跑!!")
# a = Animal("cat")
# 狗 啃骨头
# class 子类名(父类名) # Animal 基(base)类 Dog 多个派生类
class Dog(Animal):
def __init__(self,name,kind):
self.name = name
self.kind = kind
def eat(self):
print("一只名叫 {} 的 {} 在啃骨头".format(self.name,self.kind))
def run(self):
print("我是一条狗,我有四条腿跑!!")
# 实例化
# dog = Dog("二狗")
dog = Dog("二狗","哈士奇")
dog.run()
dog.eat()
# 品种 重写 和父类的方法名称一样。但是在子类里面,重新实现。
# 子类呢,需要父类里现有的功能,但是要在这个功能之外,还在再扩展。super 超级
# super - 超类 父类
#
# 狗 啃骨头
# class 子类名(父类名) # Animal 基(base)类 Dog 多个派生类
class DogV2(Animal):
def __init__(self,name,kind,private_v1): # self是子类的实例对象
# self.name = name
# Animal.__init__(self,name) # 父类的实例 子类的实例对象也是父类的实例对象
super().__init__(name,private_v1) # 调用父类现成的方法
# 方法二
# super(DogV2,self).__init__(name)
self.kind = kind # 扩展子类的特性
def eat(self):
print("一只名叫 {} 的 {} 在啃骨头".format(self.name,self.kind))
def gogo(self): # 完全颠覆父类的做法
# super().run()
print("我是一条狗,我有四条腿跑!!")
print(self._private_v1)
self.run()
#hsq = DogV2("小白","二哈")
#hsq.run()
# 关闭修改,开放扩展
# isinstance(实例对象,类) # 谁是谁的实例。
#print(isinstance(hsq,DogV2)) # hsq是DogV2实例来的
#print(isinstance(hsq,Animal)) # hsq也是父类Animal的实例
#print(isinstance(hsq,(Animal,DogV2)))
# list,str,dict
mylist = [1,2,3] # type
print(isinstance(mylist,list))
# 继承 - 完全继承。
# 重写(完全 重写)、重写情况之一:扩展(super) -- 子类和父类函数名称是一样的。
# 私有化的继承 _ 子类可以使用 __不对子类开放
# 多继承
# 人(super) 学生(init) 员工(init) # 菱形继承 super
class Student:
def study(self):
print("我是学生,我爱学习,我爱柠檬班")
class Employee:
def work(self):
print("我要赚钱,我要工作,我爱工作!!")
class People(Student,Employee):
def do_something(self):
self.work()
self.study()
def work(self):
pass
p = People()
p.do_something()
# issubclass 子类
# issubclass(子类,(父类1,父类2....))
print(issubclass(People,Student))
issubclass(People,Employee)
issubclass(People,(Student,Employee))
# 总结 object-py2
# 继承 - 完全继承,除了__开头的属性和方法之外,子类拥有父类的一切。
# 你的是我的,我的还是我的。
# 继承之后,在子类里可以像调用自己属性和方法一样,来调用父类的属性和方法。self.XXX
# 在完全继承之后,定义子类的特性。
# 如果你想对父类原有的行为进行改造、优化、扩展。可以重写父类的行为。
# 重写的要求:行为名称与父类的行为名称一样。
# 重写的两种方式:1、完全颠覆 2、保留父类的做法,在它的基础上再扩展其它的内容。
# 扩展方式来说:super - 超类。
# 子类当中,super的2种表达:super().方法(参数列表)
# super(子类名,self).方法(参数列表)
# isinstance(实例对象名,类名)
# issubclass(子类,父类)
# 多继承 - 可以有多个父类。
# 子类名(父类1,父类2....)
# 从excel操作 - 测试数据操作
python学习-继承的更多相关文章
- day25 python学习 继承,钻石继承 多态
---恢复内容开始--- 通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' d ...
- day25 python学习 继承,钻石继承
通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' def __init__(s ...
- Python学习day24-面向对象的三大特征之继承
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习笔记8-类的继承 、深度优先、广度优先
Python 类声明 语法: class 类名: 类体 例: #--encoding:utf-8-- # class AddressBookEntity: myVersion=0.1 def __in ...
- python学习之路---day20--面向对象--多继承和super() 函数
一:python多继承 python多继承中,当一个类继承了多个父类时候,这个类拥有多个父类的所欲非私有的属性 l例子: class A: pass class B(A): pass class C( ...
- Python 学习小结
python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...
- Python 学习文章收藏
作者 标题 rollenholt Python修饰器的函数式编程 - Rollen Holt - 博客园 rollenholt python操作gmail - Rollen Holt - 博客园 ro ...
- [Python] 学习资料汇总
Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大且完善的通用型语言,已经有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用 ...
- 180分钟的python学习之旅
最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...
随机推荐
- python2的编码问题小结
对于python2,经常会遇到编码问题,在此小记一下. Python2默认的编码解码方式是ascii码,这点要牢记. windows系统默认是gbk编码的,可以使用chcp查看:936,那就是GBK简 ...
- GitHub上优秀的开源项目(转载)
转载出处:https://github.com/Trinea/android-open-project 第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.A ...
- 性能测试——记weblogic 连接池满无法链接故障诊断过程
记weblogic 连接池满无法链接故障诊断过程 前段时间公司负责建行的一个票据系统在,上线前几个分行试运行环境下,每天后台日志都会报oracle.jdbc.xa.OracleXAException, ...
- Linux虚拟机扩容根分区CentOs6.9 VMware14
1.首先关闭虚拟机点击编辑虚拟机设置 2.点击想要扩容的硬盘点击扩容 3.增加容量 输入想增加的容量,因为我本身是30G写到35G是加了5G不是增加30G.(此处为了演示只增加5G) 4.开启虚拟机 ...
- Linux\CentOS MySql 安装与配置
一.MySQL 简介 MySQL 是一个关系型数据库管理系统,是MySQL AB公司开发,现在属于 Oracle 旗下产品. MySQL 采用标准化语言.体积小.速度快.成本低.开源等特点使得一些中小 ...
- 【Luogu P3387】缩点模板(强连通分量Tarjan&拓扑排序)
Luogu P3387 强连通分量的定义如下: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶 ...
- python分支循环
1.遍历循环 for i in range(5) for i in range (M,N,K) for c in s: for c in 'python' print(c,end="&quo ...
- ORA-00845 startup启动不起来关于磁盘空间扩充
问题描述:今天在虚拟机下进行startup的操作,但是没有起来,系统报错:ORA-00845: MEMORY_TARGET not supported on this system 1.startup ...
- 【译】为什么永远都不要使用MongoDB Why You Should Never Use MongoDB
背景 最近在学习DDIA(Designing Data-Intensive Applications)这本分布式领域非常急经典的入门书籍,里面第二章<数据模型与查询语言>,强调了对一对多. ...
- Linux错误:Unable to locate package解决
新买一个用于机器学习的实例,镜像系统Ubuntu.想安装一个上传.下载的包. 使用命令: sudo apt-get install lrzsz 结果一直报错: 解决方法: 使用命令: sudo apt ...