python全栈开发-面向对象-进阶
python_day_18
1,面向对象的三大特性是什么?
继承,多态,封装
2,什么是面向对象的新式类?什么是经典类?
凡是继承object类都是新式类.
凡是不继承object类都是经典类.
3,面向对象为什么要有继承?继承的好处是什么?
因为继承可以访问父类的任何方法或变量.
好处:a,提高了代码的复用性 b:提高了代码的维护性 c:让类与类之间产生了关系,是多态的前提
4,面向对象的广度优先,深度优先分别是什么?(只能是两类情况)
广度优先 : 一条路走到倒数第二级,判断,如果其他路能走到终点,则返回走另一条路.如果不能,则走到终点.
深度优先 : 一条路走到底.
5.面向对象中super的作用。
既执行本类又执行父类的方法, 既执行本类又执行父类的方法
类:
- 新式类(python3x),
- 经典类(python2).
单继承;
新式类经典类一样.
多继承:
新式类:广度优先 类名.mro() 新式类.
经典类:深度优先.
初识继承:
子类以及子类实例化的对象 可以访问父类的任何方法或变量.
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(p1.breath)
print(p1)
p1.eat() # 类名可以访问父类所有内容
print(Person.breath)
Person.eat(11) 查询顺序见下图:

定义一个Animal类,写三个类:猫,狗,鸡,,每个类中都有吃喝自己的方法
class Animal:
def __init__(self, name, sex, age):
self.name = name
self.sex = sex
self.age = age def eat(self,a1):
print('%s吃%s' % (self.name,a1)) 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,argv):
super().eat(argv)
print('鸟吃虫子...') class Chook(Animal):
def crow(self):
print('大爷laiwanya') cat1 = Cat('tom','公', 3) # 只执行子类的方法:在子类创建这个方法.
cat1.eat() # 只执行父类的方法:子类中不要定义与父类同名的方法 # 既要执行子类的方法,又要执行父类的方法?
# 有两种解决方法.
#1,Animal.__init__(self, name, sex, age)
#2,super().__init__(name,sex,age)
b1 = Brid('鹦鹉','公',20,'绿翅膀')
print(b1.__dict__)
b1.eat('金蝉')
广度优先 : 一条路走到倒数第二级,判断,如果其他路能走到终点,则返回走另一条路.如果不能,则走到终点.
深度优先 : 一条路走到底.
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()
执行顺序:

print(F.mro()) # 查询类的继承顺序
python全栈开发-面向对象-进阶的更多相关文章
- python全栈开发-面向对象-进阶2
python_day_19 今日主要内容: 1.抽象类,接口类 2.多态 3.封装 1.抽象类,接口类 python 没有接口这个概念接口类,抽象类: 制定一个规范. 举个栗子:你的项目经理提一个需求 ...
- python全栈开发-面向对象-初识
python_16_day 函数总结: https://www.processon.com/view/link/5b718274e4b0555b39e1055f 面向过程的程序设计的核心是过程(流水线 ...
- python全栈开发-面向对象-初识2
python_17_day 今日主要内容: 1.类空间,对象空间,查询顺序. 2.组合. 1.类空间,对象空间,查询顺序. class Person: animal = '高级动物' soul = ' ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
- python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
- Python全栈开发相关课程
Python全栈开发 Python入门 Python安装 Pycharm安装.激活.使用 Python基础 Python语法 Python数据类型 Python进阶 面向对象 网络编程 并发编程 数据 ...
- Python 全栈开发【第0篇】:目录
Python 全栈开发[第0篇]:目录 第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基 ...
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
python全栈开发笔记第二模块 第四章 :常用模块(第二部分) 一.os 模块的 详解 1.os.getcwd() :得到当前工作目录,即当前python解释器所在目录路径 impor ...
随机推荐
- [Java123] JDBC and Multi-Threading 多线程编程学习笔记
项目实际需求:DB交互使用多线程实现 多线程编程基础:1.5 :( (假设总分10) 计划一个半月从头学习梳理Java多线程编程基础以及Oracle数据库交互相关的多线程实现 学习如何通过代码去验证 ...
- Ubuntu安装MySQL/MariaDB
安装MariaDB/MySQL MariaDB是MySQL的分支,与MySQL高度兼容,几乎所有的命令都一样.MariaDB是由前MySQL的开发人员离开Sun公司后开发的,目的是为了防止Oracle ...
- 数据包式套接字:基于UDP协议的Socket网络编程
步骤: 1.利用DatagramPacket封装数据包: 2.利用DatagramSocket发送数据包: 3.利用DatagramSocket接收数据包: 4.利用DatagramPacket处理数 ...
- SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,总计(合计),小计
版权声明:本文为博主原创文章,未经博主允许不得转载.本人观点或有不当之处,请在评论中及时指正,我会在第一时间内修改. https://blog.csdn.net/aiming66/article/de ...
- CentOS7进行OpenStack(queens)最小化部署实验出现的问题与解决过程
注:此文为<OpenStack(queens)最小化搭建记录——控制与计算共两个节点>的补充 1.chrony时间同步服务搭建的时候,出现计算节点无法与控制节点同步.(controller ...
- C# char[]与string互相转换的两种方法
1.string转换为char[]:char[] string.ToCharArray(); static void Main(string[] args) { s ...
- PHP几种常见魔术方法与魔术变量解析
原文地址:http://small.aiweimeng.top/index.php/archives/49.html 先不多说,直接上代码,如下: class Demo { private $str ...
- doctrine 操作实例(转)
话说这篇文章真是在没有任何实例的情况下帮了大忙 另外附上我自己的一个完整demo:https://github.com/LearnForInterest/material 结合了ci框架的doctri ...
- PHP常用函数归类【持续整理】
学习了这么久PHP,基础知识总感觉不牢靠,尤其是数组,字符串函数的应用,全部手敲过次手,做出总结都是基础,在回顾一下吧. 一.PHP基础语法 变量,常量 严格区分大小写,但内置结构或关键字无所 ...
- Kafka监控与调优
Kafka监控 五个维度来监控Kafka 监控Kafka集群所在的主机 监控Kafka broker JVM的表现 监控Kafka Broker的性能 监控Kafka客户端的性能.这里的所指的是广义的 ...