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.单继承: 语法: 父类.基类.超类 子类.派生类 继承与重用:子类可以使用父类中的名字(变量和方法) 继承与派生:子类在父类的基础上又新创建了自己需要的方法 ...
随机推荐
- Technical poem
Apartment Good apartment be booked the second it bring to market. low product sold to many man, and ...
- opencv学习之路(25)、轮廓查找与绘制(四)——正外接矩形
一.简介 二.外接矩形的查找绘制 #include "opencv2/opencv.hpp" using namespace cv; void main() { //外接矩形的查找 ...
- msvc命令行cl编译c程序问题及解决
1.cmd命令行cl提示没有这玩意儿 装上Visual Studio之类 2.cl main.c提示缺dll everything搜dll所在路径,在环境配置PATH增加对应bin.IDE 3.cl ...
- eclipse下的mybatis插件:MyBatipse
MyBatipse:Eclipse 下的 Mybatis插件 MyBatipse是Eclipse的一个插件,提供了内容提示和Mybatis的配置文件验证功能: 特点 XMLEditor 的增强 代码自 ...
- Promise 异步函数的加上外壳终止Promise
//promise异步函数的请求终止 export default function markCancleble(promise){ let hasCanceled_ = false ; const ...
- 《Visual C# 从入门到精通》第三章使用判断语句——读书笔记
第3章 使用判断语句 3.1 使用布尔操作符 布尔操作符是求值为true或false的操作符. C#提供了几个非常有用的布尔操作符,其中最简单的是NOT(求反)操作符,它用感叹号(!)表示.!操作符求 ...
- NYOJ_1274_信道安全 -
别琢磨中间过程,我也整不清楚,死记住模板吧 #include <stdio.h> #include <string.h> #include <queue> usin ...
- 20190226_xlVba提取查新标题和关键词
Sub MainProc() Dim Sht As Worksheet Dim Wb As Workbook Set Wb = Application.ThisWorkbook Set Sht = W ...
- 问题处理:Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)
进入rails 文件夹, terminal输入rails console报告❌. 类似下面的 Running via Spring preloader Traceback (most recent c ...
- Putting Boxes Together CodeForces - 1030F (带权中位数)
#include <iostream> #include <algorithm> #include <cstdio> #include <math.h> ...