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. [USACO06NOV]玉米田$Corn \ \ Fields$ (状压$DP$)

    #\(\mathcal{\color{red}{Description}}\) \(Link\) 农场主\(John\)新买了一块长方形的新牧场,这块牧场被划分成\(M\)行\(N\)列\((1 ≤ ...

  2. (转)解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误

    重新启动服务器,访问web服务发现无法浏览啦!登陆服务器之后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr ...

  3. iOS-截取TableView生成图片

    先看一下实例效果: 如果所示,这是一个在APP中截图,并调起微信客户端,发送给好友的例子,图片就是一个tableView的截图. 先实现一个小例子,如果tableVIew里面的内容,没有超过当前屏幕显 ...

  4. iOS OC与JS的交互(JavaScriptCore实现)

    本文包括JS调用OC方法并传值,OC调用JS方法并传值 本来想把html放进服务器里面,然后访问,但是觉得如果html在本地加载更有助于理解,特把html放进项目里 HTML代码 <!DOCTY ...

  5. ERP系统和MES系统的区别

    公司说最近要上一套erp系统,说让我比较一下,erp系统哪个好,还有mes系统,我们适合上哪个系统,其实我还真的不太懂,刚接触erp跟mes的时候,对于两者的概念总是傻傻分不清楚,总是觉得既然都是为企 ...

  6. CentOS7.6离线安装Tomcat8.5

    准备好tomcat安装文件: 官网下载apache-tomcat-8.5.39.tar.gz文件并复制到/usr/tomcat文件夹中. 解压tomcat安装文件: 进入/usr/tomcat文件:c ...

  7. 01.centos7环境准备

    博客为日常工作学习积累总结: 1.环境准备: 系统版本:CentOS-7-x86_64-Minimal-1810.iso 运行环境:虚拟机windows上的VM 15 系统安装:参照老男孩运维要求 2 ...

  8. PHP中使用RabiitMQ---各项参数的使用方法

    RabbitMQ在PHP使用,我在这里对RabbitMQ的各项方法和参数进行了一些梳理,有不足的地方还望各位大神指点. 想要使用rabbitMQ消息队列,首先需要安装 php_amqp.dll 扩展 ...

  9. 学在Java之前

    java基础 下载JDK JDK(Java Development Kit  Java开发工具包) 官方网址: www.oracle.com                参阅oracle.html ...

  10. linux环境mysql的安装主从关系的配置