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全栈开发-面向对象-进阶的更多相关文章

  1. python全栈开发-面向对象-进阶2

    python_day_19 今日主要内容: 1.抽象类,接口类 2.多态 3.封装 1.抽象类,接口类 python 没有接口这个概念接口类,抽象类: 制定一个规范. 举个栗子:你的项目经理提一个需求 ...

  2. python全栈开发-面向对象-初识

    python_16_day 函数总结: https://www.processon.com/view/link/5b718274e4b0555b39e1055f 面向过程的程序设计的核心是过程(流水线 ...

  3. python全栈开发-面向对象-初识2

    python_17_day 今日主要内容: 1.类空间,对象空间,查询顺序. 2.组合. 1.类空间,对象空间,查询顺序. class Person: animal = '高级动物' soul = ' ...

  4. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

  5. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

  6. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

  7. Python全栈开发相关课程

    Python全栈开发 Python入门 Python安装 Pycharm安装.激活.使用 Python基础 Python语法 Python数据类型 Python进阶 面向对象 网络编程 并发编程 数据 ...

  8. Python 全栈开发【第0篇】:目录

    Python 全栈开发[第0篇]:目录   第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基 ...

  9. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

随机推荐

  1. .Net Sokcet 异步编程

    一.概述 使用Socket 进行实时通讯,如果使用APM,只需要一个Socket类即可.如果使用EAP,则还需要一个SocketAsyncEventArgs类.本文以EAP的方式展开讨论. Socke ...

  2. windows下使用docker(一)—— 安装

    1.下载地址:https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows 2.安装 按照安装向导安装 ...

  3. CCF认证201803-1 跳一跳

    import java.util.Scanner; public class Jump { public static void main(String[] args) { Scanner sc = ...

  4. JBDC—③数据库连接池的介绍、使用和配置

    首先要知道数据库连接(Connection对象)的创建和关闭是非常浪费系统资源的,如果是使用常规的数据库连接方式来操作数据库,当用户变多时,每次访问数据库都要创建大量的Connnection对象,使用 ...

  5. JSON定义及应用

    1 什么是JSON? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) 是轻量级的文本数据交换格式,JSON 比 XML 更小.更快,更易解析 ...

  6. 832. Flipping an Image (5月22日 )

    解答 class Solution { public: vector<vector<int>> flipAndInvertImage(vector<vector<i ...

  7. MySQL学习【第十三篇日志管理】

    一.MySQL日志类型 日志文件 选项  文件名/表名称   程序 错误日志 --log-error   host_name.err N/A 常规日志 --general_log host_name. ...

  8. centos7添加新网卡实现双IP双网关

     问题背景: 业务需要,针对业务需要不同地域的机构访问,所以需要在同一台机器上配置不同IP并配置不同网关,实现不用机构可以访问同一台服务器办理业务. 系统环境: centos linux7 网络环境: ...

  9. bootstrap世界探索1——山川河流(文字排版)

    世界到底是什么?其实世界很简单,正所谓一花一世界,一树一菩提,世界就在我们身边.造物神是伟大的,在我看来无论是HTML,css,js都可以看作是一个世界,但是他们是构成宏观世界不可或缺的,正如IU框架 ...

  10. css3动画,监控动画执行完毕

    在CSS3之前,在网页上要做动画,一般使用javascript来实现,用timer定时执行一些操作来实现动画效果. 自有了CSS3之后,在网页上做动画变得更简单了.相对于使用javascript的实现 ...