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搭建一个见得网站只需要半天时 ...
随机推荐
- C语言|博客作业08
这个作业属于哪个课程 C语言程序设计II 这个作业的要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9976 我在这个课程的 ...
- C语言|博客作业01
2.1你对计算机科学与技术的了解是怎样? 一开始,我并不知道计科和软件的区别,甚至以为这是一种专业的两种叫法.进了大学之后,才一下子懂了,计科就是计科,它和软件虽有相同之处,但是终究是不一样的.计科涉 ...
- [NLP] Adaptive Softmax
1. Overview Adaptive softmax算法在链接1中的论文中提出,该算法目的是为了提高softmax函数的运算效率,适用于一些具有非常大词汇量的神经网络. 在NLP的大部分任务中,都 ...
- AsyncDisplayKit编译和使用注意事项
Facebook开源框架,在github上可下载到.首先要编译AsyncDisplayKit库项目,有可能会出现下面错误: cocoaPods是基于ruby的项目版本控制软件,如果是ruby新手就会不 ...
- 学习记录:《C++设计模式——李建忠主讲》1.设计模式
1.学习目标 1)理解松耦合设计思想: 2)掌握面向对象设计原则: 3)掌握重构技法改善设计: 4)掌握GOF核心设计模式: 2.定义 每个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题解 ...
- .NET开发者的机遇与WebAssembly发展史(有彩蛋)
一.唠唠WebAssembly的发展历程 目前有很多支持WebAssembly的项目,但发展最快的是Blazor,这是一个构建单页面的.NET技术,目前已经从Preview版本升级到了beta版本,微 ...
- 【集训Day2】字符串
字符串(string) [问题描述] 给一个字符串T,问在字符串T 中可以包含最多多少个不重叠的字符串S. 字符串中的每个字符为小写或者大写字母. [输入格式] 第一行输入一个字符串S. 第二行输入一 ...
- mui开发:苹果手机自动全屏解决方案
前一段时间,使用mui写app时,出现了苹果手机播放视频时,自动全屏的情况,并且无法点击控件,只能等到播放完毕后点击控件. 那么怎么解决这个问题呢,弟弟们请看我的下面. 1.在页面的video标签中, ...
- 10-kubernetes serveraccount RBAC
目录 认证安全 serviceAccountName 和 userAccount serviceaccount 创建 使用admin 的SA 测试 URL访问kubernetes资源 APIserve ...
- vsftpd架设(配置pam模块)
Vsftpd 是很安全的ftp软件 VSFTPD的目录结构 /usr/sbin/vsftpd: VSFTPD的可执行文件 /etc/rc.d/init.d/vsftpd:启动脚本 /etc/vsftp ...