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

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. Java的Arrays类 基本用法

    初识Java的Arrays类 Arrays类包括很多用于操作数组的静态方法(例如排序和搜索),且静态方法可以通过类名Arrays直接调用.用之前需要导入Arrays类: import java.uti ...

  2. 痞子衡嵌入式:恩智浦机器视觉模块OpenMV-RT那些事(1)- 初体验

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是机器视觉模块OpenMV-RT初体验. 近些年机器视觉应用一直是个很火的方向,想象一下机器如果能长上"眼睛",是不 ...

  3. 5分钟上手自动化测试——Airtest+Poco快速上手

    版权声明:该文章为AirtestProject原创文章:允许转载,但转载必须注明“转载”并保留原链接 前言 本文档将演示使用`AirtestProject`专用的编辑器AirtestIDE,编写`Ai ...

  4. 几种常见设计模式在项目中的应用<Singleton、Factory、Strategy>

    一.前言 前几天阅读一框架文档,里面有一段这样的描述 “从对象工厂中………” ,促使写下本文.尽管一些模式简单和简单,但是常用.有用. 结合最近一个项目场景回顾一下里面应用到的一些模式<Sing ...

  5. 从spring boot发邮件聊到开发的友好性

    前些天帮一个朋友做网站,全站都是静态页面,唯一需要用到后端开发的是他需要一个留言板.传统的留言板一般都是提交后保存到数据库,然后提供一个后台的留言列表给管理人员看,我嫌麻烦,就决定留言提交到后台直接发 ...

  6. 【项目管理】Mybatis-Generator之最完美配置详解

    今天看到了一篇总结特别详细的关于Mybatis-Generator配置文件的文章,特转载进行记录学习使用. 先附上原文地址链接:张思全----全哥文章 <?xml version="1 ...

  7. .NET进阶篇06-async异步、thread多线程4

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 梯子 一.锁1.lock2.Interlocked3.Monitor4.SpinLock5.Mutex6.Semaphore7.Events1. ...

  8. qs库使用指南

    qs是一个流行的查询参数序列化和解析库.可以将一个普通的object序列化成一个查询字符串,或者反过来将一个查询字符串解析成一个object,而且支持复杂的嵌套.它上手很容易: Qs.parse('x ...

  9. wait notify notifyAll await signal signalAll 的理解及示例

    从常见的一道面试题开始,题目的描述是这样子的: 有三个线程分别打印A.B.C,请用多线程编程实现,在屏幕上循环打印10次ABCABC- 网上大都教了你怎么去实现,其实我也写过一篇 https://bl ...

  10. node.js调试入门

    1-1 Inspector介绍 使用Inspector调试Node.js的优势 可查看当前上下文的变量 可观察当前函数调用堆栈 不侵入代码 可在暂停状态下执行指定代码 Inspector的构成以及原理 ...