python 入门基础22 --复习 面向对象
面向过程编程思想:
核心:过程
过程指的是解决问题的具体步骤,即先干什么再干什么。
基于该编程思想编写程序,相当于一条流水线,一种机械式的思维方式。
面向对象编程思想:
核心:对象
对象指的是数据与方法的结合体。相当于是一个容器。
基于该编程思想编写程序,就像创造世界,一种上帝式的思维方式。
一 类与对象
(多个对象抽离出来的具有相似的属性和方法)
对象是特征与技能结合体,即数据(属性)与方法。
类是一系列对象相似的特征与技能的结合体,即相似的数据(属性)与方法。
二 面向对象三大特性
封装:
把一堆数据属性与方法属性 整合 到对象里面。
相对于以前讲的隐藏+提供接口的说法,更加的抽象了一点,但是结合着箱子的例子,
比以前容易理解
隐藏:
__属性 ---> 把属性变形了,即隐藏起来了!
所谓的隐藏,本质上就是在前面加上 __类名
例子:
class A:
def __init__(self, name):
self.__name = name
def dayin(self):
print(self.__dict__)
a = A('zhangsan')
a.dayin() # {'_A__name': 'zhangsan'}
继承:
父类是一系列类共有的数据属性与方法属性的结合体。
子类可以继承父类的属性,还可以派生出自己独有的属性。
多态:
1.抽象类 :被继承,用来定义方法,但不实现,继承它的子类进行实现
2.鸭子类型 :只要属性、方法相似,就都称为鸭子(即使不继承)
三 对象的绑定方法
给对象用的,由对象来调用,会自动把对象本身当作第一个参数传给self。
四 classmethod、staticmethod、property
classmethod本质上是一个装饰器,装饰给类里面的方法。
被装饰的方法,即类的绑定方法。
(声明之后为类的方法)
staticmethod:声明的方法作为普通方法,类和对象都可调用
property:用作封装属性
五 组合
组合:
1.即继承父类的属性,且不与父类耦合到一起。
2.把一个对象放到另一个对象里面。
组合是继承的一种应用。
六 面向对象高级
1、反射:
通过 字符串 来操作类与对象的属性。
就是映射关系,--> 输入cmd,通过匹配 method_map 中的方法,调用实现函数
hasattr()
判断对象或者类的属性是否存在!
getattr()
获取对象或者类的属性
参数1: 对象
参数2: '属性名'
参数3: 默认值
setattr()
设置对象或者类的属性
delattr()
删除对象或者类的属性
2、类的内置方法
__init__(): 调用类的时候自动触发__init__。
__str__(): 打印对象的时候出发此方法。 (此方法内,必须return一个字符串)
__del__(): 在对象 占用空间被清掉了,会自动触发__del__方法的执行。
__setattr__(): 修改对象的属性会自动触发此方法的执行。
__deleter__: 删除属性的时候会自动触发。
__call__: 调用对象的时候会自动触发。 讲元类的时候会有用!
python 入门基础22 --复习 面向对象的更多相关文章
- Python入门基础(9)__面向对象编程_3
继承 子类自动继承父类的所有方法和属性 继承的语法: class 类名(父类名) pass 1.子类继承父类,可以直接使用父类中已经封装好的方法,不需要再次开发 2.子类可以根据需求,封装自己特有的属 ...
- Python入门基础(9)__面向对象编程_1
定义一个只包含方法的类 class 类名: def 方法1(self,参数列表): pass def 方法2(self,参数列表): pass 当一个类定义之后,要使用这个类来创键对象.语法如下: 对 ...
- Python入门基础(9)__面向对象编程_2
__str__方法 如果在开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以利用__str__这个内置方法了 注意:__str__方法必须返回一个字符串 class Cat(): ...
- Python 入门基础6 --字符编码、文件操作1
今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...
- Python入门基础学习 三
Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...
- Python入门基础学习 二
Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...
- Python入门基础学习 一
Python入门基础学习 一 Python下载及安装 下载地址:https://www.python.org/,选择最新的版本下载 稍等一会,安装完成. 简单语句 从idle启动Python:IDLE ...
- python入门基础
Python 入门 变量 什么是变量?变量就是变化的量,核心是"变"和"量"两个字,变就是变化,量就是衡量状态. 为什么需要变量?程序执行的本质就是一系列状态的 ...
- Python入门 ---基础知识
Python入门不知道这些你还是承早放弃吧!真的 Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言 ...
随机推荐
- PAT甲题题解-1040. Longest Symmetric String (25)-求最长回文子串
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789177.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- Linux内核分析——第六周学习笔记20135308
第六周 进程的描述和进程的创建 一.进程描述符task_struct数据结构 1.操作系统三大功能 进程管理 内存管理 文件系统 2.进程控制块PCB——task_struct 也叫进程描述符,为了管 ...
- VSTS写单元测试
用VSTS写单元测试 许多应用程序都会用到“用户”类型,今天我要用的是ConsoleApplicatio ...
- 转Git学习碰到的问题
[原]Git学习碰到的问题 1.通过 windows 下的 gitbash 连接 github 时 $ ssh-keygen -t rsa -C "abcd@efgh.com" / ...
- MT【176】两两乘积
求$1,2\cdots,n$两两乘积的平均值____ 解答:$\dfrac{1}{C_n^2}\sum\limits_{1\le i<j\le n}{ij}=\dfrac{1}{n(n-1)}( ...
- 【CF912E】Prime Game(meet in the middle)
[CF912E]Prime Game(meet in the middle) 题面 CF 懒得翻译了. 题解 一眼题. \(meet\ in\ the\ middle\)分别爆算所有可行的两组质数,然 ...
- NOI.AC 20181103 题解
CF 1037B Reach Median 班上 n个同学(n 是奇数)排成一排站队,为了美观,需要大家高度的中位数是 x. 你可以让同学们在脚下垫木板或者稍微蹲一点来达成这个目标.对任意一位同学的 ...
- 【转】为什么 MQTT 是最适合物联网的网络协议
初识 MQTT 为什么 MQTT 是最适合物联网的网络协议 Michael Yuan2017 年 6 月 14 日发布 WeiboGoogle+用电子邮件发送本页面 0 物联网 (IoT) 设备必须连 ...
- 纯干货!一款APP从设计稿到切图过程全方位揭秘(转)
@BAT_LCK :我本身是一名GUI设计师,所以我只站在GUI设计师的角度去把APP从项目启动到切片输出的过程写一写,相当于工作流程的介绍吧.公司不同,流程不尽相同,但是终究还是能有些帮助. 依旧声 ...
- 生成器python
一.列表生成式 需求:看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我要求你把列表里的每个值加1,你怎么实现?你可能会想到2种方式 >>> a [0, 1, 2 ...