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 ...
随机推荐
- ethereumjs-vm/examples/run-transactions-simple
https://github.com/ethereumjs/ethereumjs-vm/tree/master/examples/run-transactions-simple prerequisit ...
- 说说Vue.js的v-for
v-for的话,相比传统的jQuery的 $.each或者for循环要简洁明了的多, 比如在Jquery中我要遍历数据,通常如下几种方式: $.each(apps, function(i, app) ...
- log4j 日志配置和jar包下载
1.日志log4j文件配置 ${webapp.root}才是项目根目录log4j.appender.logfile.File= ${catalina.home}/log/filter.log 指生成日 ...
- 登录SQLServer报错:无法连接到DESKTOP-LDJHQGN
解决方法:下↓↓↓
- staticmethod classmethod
1. 静态方法 @staticmethod 只是名义上归类管,实际上静态方法里访问不了类或者实例中的任何属性 2. 类方法 @classmethod 只能访问类变量,不能访问实例变量 3.属性方法 @ ...
- Web—10-前端性能优化
前端性能优化 从用户访问资源到资源完整的展现在用户面前的过程中,通过技术手段和优化策略,缩短每个步骤的处理时间从而提升整个资源的访问和呈现速度.网站的性能直接会影响到用户的数量,所有前端性能优化很重要 ...
- Oracle 的PL/SQL语言使用
--PL/SQL语言(procedure language 过程化语言) --1.声明类型 declare k number; m ; --Character String buffer too sm ...
- Leetcode名企之路
微信扫码关注,每天推送一道面试题! 公众号:Leetcode名企之路 作者简介 知乎ID: 码蹄疾 码蹄疾,毕业于哈尔滨工业大学. 小米广告第三代广告引擎的设计者.开发者: 负责小米应用商店.日历.开 ...
- oracle10g学习笔记
1.简介 1.1.sql:Structured Query Language 结构化查询语言 1.2.windows在目录路径中使用反斜线\,unix和linux使用正斜线/ 1.3.Number(a ...
- 复习宝典之Mysql数据库
查看更多宝典,请点击<金三银四,你的专属面试宝典> 第一章:mysql数据库 1)mysql与mariaDb MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用 ...