# 继承
# 你的是我的,我的还是我的

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学习-继承的更多相关文章

  1. day25 python学习 继承,钻石继承 多态

    ---恢复内容开始--- 通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' d ...

  2. day25 python学习 继承,钻石继承

    通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' def __init__(s ...

  3. Python学习day24-面向对象的三大特征之继承

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  4. Python学习笔记8-类的继承 、深度优先、广度优先

    Python 类声明 语法: class 类名: 类体 例: #--encoding:utf-8-- # class AddressBookEntity: myVersion=0.1 def __in ...

  5. python学习之路---day20--面向对象--多继承和super() 函数

    一:python多继承 python多继承中,当一个类继承了多个父类时候,这个类拥有多个父类的所欲非私有的属性 l例子: class A: pass class B(A): pass class C( ...

  6. Python 学习小结

    python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...

  7. Python 学习文章收藏

    作者 标题 rollenholt Python修饰器的函数式编程 - Rollen Holt - 博客园 rollenholt python操作gmail - Rollen Holt - 博客园 ro ...

  8. [Python] 学习资料汇总

    Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大且完善的通用型语言,已经有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用 ...

  9. 180分钟的python学习之旅

    最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...

随机推荐

  1. CentOS 7安装图形界面步骤和问题解决方法

    CentOS 7图形安装步骤: 首先需要进行必要的图形组件安装--命令为: yum groupinstall "X Window System " yum groupinstall ...

  2. 阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建

    准备: 两台配置CentOS 7.3的阿里云ECS服务器: hadoop-2.7.3.tar.gz安装包: jdk-8u77-linux-x64.tar.gz安装包: hostname及IP的配置: ...

  3. 在阿里云服务器中配置JDK、tomcat、mysql

    阿里云服务器搭建配置 linux命令:参考:https://www.cnblogs.com/itdansan/p/8545187.html cat 文件名: 查看文件内容 ctrl+D : 退出查看 ...

  4. 【Luogu P3834】可持久化线段树(主席树)

    Luogu P3834 可持久化数据结构就是支持在历史版本上进行查询和修改操作的数据结构. 主席树就是对线段树的改进,使之可持久化. 前置知识:动态开点线段树 我们利用权值(值域)线段树统计区间内的数 ...

  5. Python编译升级

    [root@localhost python]# tar xvf Python-3.6.9.tgz [root@localhost python]# cd Python-3.6.9/ [root@lo ...

  6. 从Excel到Python:最常用的36个Pandas函数

    本文涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入.数据清洗.预处理,以及最常见的数据分类,数据筛选,分类汇总,透视等最常见的操作. 生成数据表 常见的生成数据表的方法有两 ...

  7. 本地存储常用方式 localStorage, sessionStorage,cookie 的区别 和 服务器存储session

    本地存储:把一些信息存储到客户端本地(主要目的有很多,其中有一个就是实现多页面之间的信息共享)       1. 离线缓存(xxx.manifest)  H5处理离线缓存还是存在一些硬伤的,所以真实项 ...

  8. c语言基本数据类型short、int、long、char、float、double大小及命名规则

    C 语言包含的数据类型: 一.数据类型与“模子”short.int.long.char.float.double 这六个关键字代表C 语言里的六种基本数据类型. 怎么去理解它们呢? 举个例子:见过藕煤 ...

  9. block中self会造成循环引用问题

    将代码块中的 self换成unsafeSelf __unsafe_unretained 与 __weak 99%相同 __weak 当对象释放之后 会自动设置为nil 而__unsafe_unreta ...

  10. 企业DevOps研发模式下CI/CD实践详解指南

    阅读全文大概需要 10分钟. 1. 前言 借着公司今年新组建的中台研发部东风,我作为其中的主要负责人,在研发中心主导推行DevOps研发管理模式转变及质量管理创新建设,本篇文章摘取自今年9月底,笔者在 ...