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 的设计具有很强的可读性,相比其他语言 ...
随机推荐
- kafka学习总结之kafka核心
1. Kafka核心组件 (1)replication(副本).partition(分区) 一个topic可以有多个副本,副本的数量决定了有多少个broker存放写入的数据:副本是以partitio ...
- Python Pandas read_csv报错
为实现文本去重(将前面采集的数据进行两两对比删除重复),写了以下代码. #-*- coding: utf-8 -*-import pandas as pd inputfile = 'e:/data/H ...
- 【设计模式】—— 命令模式Commond
前言:[模式总览]——————————by xingoo 模式意图 将一个请求封装成一个对象,从而对这个命令执行撤销.重做等操作. 典型的Eclipse开发中,编辑器的操作就需要用到这个模式,比如Un ...
- Jenkins+Jmeter+Ant自动化集成环境搭建
1.搭建环境,安装以下工具 JDK:jdk1.7.0_79 Ant:apache-ant-1.9.7 Jmeter: apache-jmeter-3.0 Jenkins: jenkins-1.651. ...
- 查看是否存在tomcat进程和关闭方法
#看是否已经有tomcat在运行了 ps -ef |grep tomcat #如果有,用kill; kill - pid #pid 为相应的进程号 例如 ps -ef |grep tomcat 输出如 ...
- [代码]--ORA-01745: 无效的主机/绑定变量名 ORA-00917: 缺失的逗号 oracle日期格式错误
今天在oracle中执行插入语句的时候报了一个奇怪的错误,在程序中报的错误是ORA-01745: 无效的主机/绑定变量名,网上一查说是缺失逗号,在查询分析器执行的时候报缺失的逗号,仔细看了一下也没有缺 ...
- P3254 圆桌问题
题目链接 非常简单的一道网络流题 我们发现每个单位的人要坐到不同餐桌上,那也就是说每张餐桌上不能有同一单位的人.这样的话,我们对于每个单位向每张餐桌连一条边权为1的边,表示同一餐桌不得有相同单位的人. ...
- 【刷题】BZOJ 3944 Sum
Description Input 一共T+1行 第1行为数据组数T(T<=10) 第2~T+1行每行一个非负整数N,代表一组询问 Output 一共T行,每行两个用空格分隔的数ans1,ans ...
- C语言常用修饰符
前言 这两天在梳理自己C语言的知识,发现写了这么久的代码,居然所有的知识点都在自己的脑袋里.这可不好,万一老了呢.... 接下来的几天里,会以文字的形式,将这些知识整理出来,分享给大家. 想要看看英文 ...
- 【NOIP 2018】填数游戏(思考与推导)
题目链接 这道题讲道理还是不错的,因为你需要不断挖掘其中的性质来帮助解题.可惜数据范围开在这里让考试时的我很慌,勉强也就写了$65$分就没了.回忆在考场上,思路是没有错的,就是发掘不够深入,思路还不够 ...