面向对象ZJ
面向对象:
对象: 万事万物皆为对象. 特征, 动作或功能放在一起的就是一个对象
对象如何创建的. 在python中对象是通过类来创建的. 类是对对象的描述.统称.约束.
class Car:
def fly(self):
pass
类与对象的关系:
类是类型, 类别. 对事物的描述
对象是个体. 具体的某一个东西或者事物
创建对象:
类名() 实例化.
三大特征:
1. 封装. 将数据或者方法封装在一个类中.
2. 继承. 子类可以自动有用父类中除了私有内容外的所有内容. 包括了抽象方法
3. 多态. python原生就是多态. 同一个对象, 多种形态.
成员:
1. 变量
实例变量. 对象拥有的东西.
类变量. 类拥有的东西.多个对象共享. 最好是类名访问类变量
2. 方法
1. 实例方法 def 方法(self):pass
self: 当前调用这个方法的对象.
2. 静态方法 最好是类名访问
@staticmethod
def 方法():
3. 类方法 最好是类名访问
@classmethod
def 方法(cls):
3. 属性
用方法来描述属性信息
@property
def age(self):
return 18
类与类之间的关系:
1. 依赖关系 类与类的关系是最弱的
在方法的参数中传递其他类的对象
2. 关联关系. 组合. 聚合 关系很紧密.
把一个对象装在自己身上
class Phone:
def __init__(self, person):
self.owner = person
self.user = user
class Person:
pass
class User:
pass
3. 继承关系, 实现关系
class 子类(父类):
pass
父类: 基类. 超类
子类: 派生类.
实现关系:
父类: 抽象类. 如果都是抽象方法. 父类被称为: 接口
子类: 必须对父类中的抽象方法进行重写.
约束:
父类对子类的约束. 子类必须重写的内容
1. 抛异常 raise NotImplementError
2. 抽象类
from abc import ABCMeta, abstractmethod
元类必须设置成ABCMeta。 metaclass = ABCMeta
这个类中就可以写出抽象方法。 @abstractmethod
类中包含抽象方法。 那么这个类就是抽象类. 抽象类一般不创建对象
MRO:
1. 经典类
采用的是深度优先遍历
2. 新式类
如果没有菱形继承. 就是深度优先遍历。
如果是简单的菱形继承。把头干掉。 使用深度优先。 最后是头
如果是复杂的菱形.需要用C3算法
找到每个类的继承关系. 然后拆分. 拆到最后. 然后再合并.
笔试题. 第一件事先画图. 看有没有菱形. 然后再算.
super:
执行MRO列表中的下一个类中的方法
super().方法()
super(类名, self).方法()
反射
hasattr(obj, str)
getattr(obj, str)
setattr(obj, str, value)
delattr(obj, str)
issubclass, type, isinstance
issubclass: 判断是否是xxx的子类
type: 精准的给出对象是哪个类的对象
isinstance: 判断xxx是否是xxx类型的.
方法和函数
FunctionType, MethodType
异常处理:
抛出异常: raise Exception()
捕获异常:
try:
xxxx
except Exception as e:
xxxx
else:
finally:
堆栈信息:
import traceback
和logging一起用
自定义异常: 继承Exception
面向对象ZJ的更多相关文章
- PHP从零开始-笔记-面向对象编程的概念
面向对象变成的概念 需要一一种不同的方式来考虑如何构造应用程序.通过对象可以在对应用程序所处理的显示任务.过程和思想进行编码是,实施更贴切的建模.OOP方法并不是将应用程序考虑成一个将大量数据从一个函 ...
- python 【第四篇】:面向对象(一)
1.前言 提笔忘字,感慨良多!python自习前前后后有一年多了吧,貌似花了不少时间,其实没学到啥东西,都是在面向对象编程之前基础知识这块一直打转转,每次到了面向对象这块就感觉很蒙,看两天直接放弃,从 ...
- python基础学习笔记——面向对象初识
面向对象初识 python中一切皆对象. 类有两种: 新式类:在py3中所有类都是新式类 经典类:在py2中只有类本身继承了object类才叫做新式类,默认是经典类 class Person: cou ...
- PythonI/O进阶学习笔记_3.2面向对象编程_python的封装
前言: 本篇相关内容分为3篇多态.继承.封装,这篇为第三篇 封装. 本篇内容围绕 python基础教程这段: 在面向对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法.使 ...
- angular2系列教程(六)两种pipe:函数式编程与面向对象编程
今天,我们要讲的是angualr2的pipe这个知识点. 例子
- 一起学 Java(二)面向对象
一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
- 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型
前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...
- .NET 基础 一步步 一幕幕[面向对象之对象和类]
对象和类 本篇正式进入面向对象的知识点简述: 何为对象,佛曰:一花一世界,一木一浮生,一草一天堂,一叶一如来,一砂一极乐,一方一净土,一笑一尘缘,一念一清静.可见"万物皆对象". ...
随机推荐
- 再谈数据库优化(database tuning)的真谛和误区
当今各行业信息量呈现爆炸式增长,因此,数据库优化也就显得弥足重要.随着数据库性能问题的出现,每位用户为了解决出现的问题,不得不满网上到处搜索优化的”灵丹妙药“和捷径,于是,就出现了各种各样的条条框框和 ...
- 如何把一个杯子卖到上万元,不学你就OUT了
我们可以看看一个产品卖到多少钱需要占有什么样的资源: 第1种卖法:卖产品本身的使用价值,只能卖3元/个 如果你将他仅仅当一只普通的杯子,放在普通的商店,用普通的销售方法,也许它最多只能卖3元钱,还可能 ...
- Maven常见jar包依赖
<!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactI ...
- nyoj 0325 zb的生日(dp)
nyoj 0325 zb的生日 zb的生日 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集 ...
- DDR3和eMMC区别
DDR3内存条和eMMC存储器区别: 1. 存储性质不同:2. 存储容量不同:3. 运行速度不同:4. 用途不同. 具体区别如下: 1.存储性质不同:eMMC是非易失性存储器,不论在通电或断电状态下, ...
- day_07_python_1124
01 昨日内容回顾 数据类型补充: str <---> list split join list <---> set set(list) list(set()) list &l ...
- 【原创】<Debug> not positioned on a valid record
[Problem] QSqlQuery::value: not positioned on a valid record QSqlQuery :: value:未定位在有效记录上 [Solution] ...
- 每天CSS学习之text-overflow
text-overflow是CSS3的一个属性,其作用是当文本溢出包含它的元素时,应该裁剪还是将多余的字符用省略号来表示. 该属性一般和overflow:hidden属性一起使用. text-over ...
- 十七. Python基础(17)--正则表达式
十七. Python基础(17)--正则表达式 1 ● 正则表达式 定义: Regular expressions are sets of symbols that you can use to cr ...
- 以黄门镇黄湾村某一扶贫文档为例——将Excel数据填入到已存在的Word模板
傻瓜可以写出机器读得懂代码,但写出让人能读懂的代码的是优秀程序员 作用:通过Excel文件中的一列数据作为文件名创建Word文档,并将Excel中的一行数据填一表,实现自动化 Excel的VBA宏代码 ...