python day18--面向对象,继承
- # class Animal:
- # breath = '呼吸'
- #
- # def __init__(self, name, sex, age):
- # self.name = name
- # self.sex = sex
- # self.age = age
- #
- # def eat(self):
- # print(self)
- # print('动物都需要进食....')
- #
- #
- # class Person(Animal): # 括号里面的 父类,基类,超类 括号外面的 子类,派生类.
- # pass
- #
- #
- # class Cat:
- # pass
- #
- #
- # class Dog:
- # pass
- #
- #
- # p1 = Person('alex', 'laddyboy', 1000)
- # print(p1.__dict__)
- # 初识继承:
- # 子类以及子类实例化的对象 可以访问父类的任何方法或变量.
- # 类名可以访问父类所有内容
- # print(Person.breath)
- # Person.eat(111)
- # 子类实例化的对象也可以访问父类所有内容
- # print(p1.breath)
- # print(p1)
- # p1.eat()
- class Animal:
- def __init__(self, name, sex, age):
- self.name = name
- self.sex = sex
- self.age = age
- def eat(self):
- print('%s吃' % (self.name))
- def drink(self):
- print('%s喝东西' % (self.name))
- class Cat(Animal):
- def miaow(self):
- print('喵喵叫')
- # def eat(self): # 只执行自己类中的方法
- # print(666)
- class Brid(Animal):
- def __init__(self, name,sex,age,wing): # self b1对象 name '鹦鹉',sex '公',age 20, wing '绿翅膀'
- '''
- self=b1对象
- name='鹦鹉'
- sex='公'
- age= 20,
- wing='绿翅膀'
- '''
- # Animal.__init__(self, name, sex, age)
- super().__init__(name,sex,age) # super(Brid,self).__init__(name,sex,age)
- self.wing = wing
- def bark (self):
- print('嗷嗷叫')
- def eat(self):
- super().eat()
- print('鸟吃虫子...')
- class Chook(Animal):
- def crow(self):
- print('大爷laiwanya')
- # cat1 = Cat('tom','公', 3)
- # # cat1.eat()
- # 只执行父类的方法:子类中不要定义与父类同名的方法
- # 只执行子类的方法:在子类创建这个方法.
- # 既要执行子类的方法,又要执行父类的方法?
- # 有两种解决方法.
- # 1,Animal.__init__(self, name, sex, age)
- # 1,super().__init__(name,sex,age)
- # cat1 = Cat('tom','公', 3,)
- # 继承的进阶
# 继承: 单继承,多继承.
- # 类: 经典类, 新式类
# 新式类: 凡是继承object类都是新式类.
# python3x 所有的类都是新式类,因为python3x中的类都默认继承object.
# class A:
# pass
# 经典类: 不继承object类都是经典类
#python2x:(既有新式类,又有经典类) 所有的类默认都不继承object类,所有的类默认都是经典类.你可以让其继承object.- # 单继承: 新式类,经典类查询顺序一样.
- # 多继承:
# 新式类: 遵循广度优先.
# 经典类: 遵循深度优先.- # 多继承的新式类 广度优先 : 一条路走到倒数第二级,判断,如果其他路能走到终点,则返回走另一条路.如果不能,则走到终点.
- # class A:
- # def func(self):
- # print('IN A')
- #
- # class B(A):
- # pass
- # # def func(self):
- # # print('IN B')
- #
- # class C(A):
- # pass
- # # def func(self):
- # # print('IN C')
- #
- # class D(B):
- # pass
- # # def func(self):
- # # print('IN D')
- #
- # class E(C):
- # pass
- # # def func(self):
- # # print('IN E')
- #
- # class F(D,E):
- # pass
- # # def func(self):
- # # print('IN F')
- #
- # f1 = F()
- # f1.func()
- # class A:
- # def func(self):
- # print('IN A')
- #
- # class B(A):
- # pass
- # # def func(self):
- # # print('IN B')
- #
- # class C(A):
- # pass
- # # def func(self):
- # # print('IN C')
- #
- # class D(B):
- # pass
- # # def func(self):
- # # print('IN D')
- #
- # class E(C):
- # def func(self):
- # print('IN E')
- #
- # class F(D,E):
- # pass
- # # def func(self):
- # # print('IN F')
- #
- # f1 = F()
- # f1.func()
- #
- # print(F.mro()) # 查询类的继承顺序
- # 多继承的经典类 深度优先 : 一条路走到底.
python day18--面向对象,继承的更多相关文章
- Python之面向对象继承和派生
Python之面向对象继承和派生 什么是继承: 继承是一种创建新的类的方法.在Python中,新建的类可以继承自一个或多个父类.原始类称为基类或超类. 新建的类称为派生类或子类. Python中类的继 ...
- 【学习笔记】--- 老男孩学Python,day18 面向对象------继承
继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类, 父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class Fathe ...
- python小兵 面向对象继承super和c3算法
python多继承 在前面的学习过程中. 我们已经知道了Python中类与类之间可以有继承关系. 当出现了x是一种y的的时候. 就可以使⽤继承关系. 即"is-a" 关系. 在继承 ...
- Python之面向对象继承复习
总结:self是谁就从谁开始寻找
- python中多继承C3算法研究
在python的面向对象继承问题中,单继承简单易懂,全部接受传承类的属性,并可添加自带属性, 但是,在多继承情况下,会遇到多个被继承者的顺序问题,以及多次继承后查找前几次继承者需求属性时,可能不易发现 ...
- python之面向对象(继承)
类的继承 python之面向对象(继承) 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系. 需要注意的地方:继承语法 c ...
- Python之路-面向对象&继承和多态&类属性和实例属性&类方法和静态方法
一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强…” 什么是面 ...
- python学习日记(面向对象——继承)
什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class Par ...
- Python学习(七)面向对象 ——继承和多态
Python 类的继承和多态 Python 类的继承 在OOP(Object Oriented Programming)程序设计中,当我们定义一个class的时候,可以从某个现有的class 继承,新 ...
- 《Python》 面向对象三大特性之继承
一.继承大纲: 继承和抽象(两个概念) 1.单继承: 语法: 父类.基类.超类 子类.派生类 继承与重用:子类可以使用父类中的名字(变量和方法) 继承与派生:子类在父类的基础上又新创建了自己需要的方法 ...
随机推荐
- MyBatis注解方式批量插入操作
@Insert({ "<script>", "insert into table_name(column1, column2, column3) values ...
- sqlserver group by后获取其他字段(多种方法)
大家都知道用group by的话,select 后面指定的字段必须与group by后面的一致.group by 只有个别字段,如果拿出其他未分组的字段信息呢?在网上搜了下, 总结如下: 使用了gro ...
- Mysql 数据类型、约束类型
mysql数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准 ...
- mysql密码的查看/修改
2.Mysql的Root密码忘记----查看或修改方法 2.1)启动命令行:windows微标键+R 2.2)在命令行输入taskkill /f /im mysqld.exe 回车,暂停Mysql服务 ...
- 剑指offer(59)按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题目分析 这道题还是需要画图分析,不然不好找 ...
- 用bytomswap进行“跨链”资产转换
bytom是专注资产领域的公有区块链平台,最近开发者社区基于比原做了一款资产转换平台.我们可以在上面通过自己现有的资产在比原上发行资产.然后达到资产转换的目的. 一. 以太币资产转换成比原上的资产 首 ...
- HDU2476 String painter——区间DP
题意:要把a串变成b串,每操作一次,可以使a串的[l,r]区间变为相同的一个字符.问把a变成b最少操作几次. 这题写法明显是区间dp ,关键是处理的方法. dp[l][r]表示b串的l~r区段至少需要 ...
- JavaScript的Let用法
let 语句声明一个块级作用域的本地变量,并且可选的将其初始化为一个值. 描述 let 允许你声明一个作用域或被限制在块级中的变量.语句或者表达式. 与var不同的是,它声明的变量只能是全局或者整个函 ...
- _pvp
comment 备注 zone 区域ID,.gps第二个参数 area 地域ID,.gps第三个参数 type 区域类型(保持原状.安全区.自由PVP.自由PVP - 禁止组队.自定义阵营(_fact ...
- 【Core内存】.NET Core 2.0中使用MemoryCache
说到内存缓存大家可能立马想到了HttpRuntime.Cache,它位于System.Web命名空间下,但是在ASP.NET Core中System.Web已经不复存在.今儿个就简单的聊聊如何在ASP ...