DAY 22初识面向对象
一.两种编程思想
1.面向过程编程
核心是'过程',过程指的是解决问题的步骤,就是先干什么再干什么
基于面向过程思想编写程序相当于写一条流水线,是一种机械式的思维方式
优点:解决问题的思路清晰,可以把复杂的问题流程化,进而简单化
缺点:可拓展性差
2.面向对象编程
核心是'对象',对象指的是特征与技能的结合体
基于面向对象思维编写程序就好像创造一个世界,是一种上帝式的思维方式
优点:可拓展性强
缺点:解决问题的思路不止一条,编程复杂度高于面向过程
重点:面向对象的核心体现是将数据和处理数据的程序封装到对象中
3.方法与属性
方法和函数都是解决问题的功能
函数:通过函数名直接调用
方法:通过附属者.语法来调用
变量:通过变量名访问变量值
属性:通过附属者.语法来访问变量值
二.名称空间操作
1.能产生名称空间的有:文件 | 函数 | 类
2.能产生名称空间的对象有__dict__这个值,通过该这个值访问到名字与地址的对应关系
3.__dict__指向的就是附属对象的名称空间
import re
print(re.__dict__) re.__dict__['name'] = 're模块'
print(re.__dict__['name']) re.__dict__['action'] = lambda x: x
print(re.__dict__['action'](1000)) def fn():
pass
print(fn.__dict__) fn.name = 'fn函数'
print(fn.name) def test():
print("可以成为fn功能的函数")
fn.action = test
fn.action()
三.类与对象
1.区别与定义
类:具有相同特征与行为个体集合的抽象体现
对象:有特征、行为的具体个体,就是类的具体表现
区别:两人同时思考一个名字,想到的一定是同一物体就是对象反之一定是类
2.语法
1.类的声明:
class 类名: # class定义类语法的关键字 类名用驼峰体
pass
def 方法名(self):
pass
2.对象的产生(实例化)
对象1 = 类名()
对象2 = 类名()
对象3 = 类名()
3.特点
1.类与对象都有自己独立的名称空间,每一个实例化的对象名称空间也是各自独立1的
2.所有类与对象都能额外添加 属性(变量)和 方法(函数)
重点:类一旦被加载(随所属文件的加载就加载)就会进入类的内部执行类中所有代码
四.对象查找属性的顺序
class People:
# 类自带(不同在外界额外添加)的属性与方法
identify = '人类'
def sleep(self):
print('睡觉')
p1 = People()
p2 = People()
p1.identify = '新人类'
print(p1.identify) # 访问自己的
p1.__dict__.clear() # 删除自己的后
print(p1.identify) # 访问类的
print(p2.identify) # p2没有自己的,访问类的
重点:属性的访问顺序:优先加载自身的名字,如果没有再考虑类的
DAY 22初识面向对象的更多相关文章
- Day 22 初识面向对象
一.两种编程思想 1.面向过程编程 核心是'过程',过程指的是解决问题的步骤,就是先干什么再干什么 基于面向过程思想编写程序相当于写一条流水线,是一种机械式的思维方式 优点:解决问题的思路清晰,可以把 ...
- Python_初识面向对象
楔子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗 ...
- 第五章 JavaScript对象及初识面向对象
第五章 JavaScript对象及初识面向对象 一.对象 在JavaScript中,所有事物都是对象,如字符串.数值.数组.函数等. 在JavaScript对象分为内置对象和自定义对象,要处理一些 ...
- python - 初识面向对象
1.初识面向对象 面向过程:一切以事务的发展流程为中心 优点:负责的问题流程化,编写相对简单 缺点:可扩展性差,只能解决一个问题,改造也会很困难,牵一发 ...
- python之路--初识面向对象
一 . 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大 ...
- python 全栈开发,Day19(组合,组合实例,初识面向对象小结,初识继承)
一.组合 表示的一种什么有什么的关系 先来说一下,__init__的作用 class Dog: def __init__(self, name, kind, hp, ad): self.name = ...
- Day7 初识面向对象,面向对象之继承、多态和封装
一.面向对象引言 一.面向对象的程序设计的由来 详述见:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二.面向对象引子 写一个简单程序 ...
- Java基础-初识面向对象编程(Object-Oriented-Programming)
Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...
- python学习之老男孩python全栈第九期_day022知识点总结——初识面向对象
一. 面向对象的引入# 人狗大战 def person(name,HP,aggr,sex): person = { 'name':name, # 昵称 'HP':HP, # 生命值 'aggr':ag ...
随机推荐
- 详解Java内存区域?虚拟机类加载机制?
一.Java运行时数据区域 1.程序计数器 “线程私有”的内存,是一个较小的内存空间,它可以看做当前线程所执行的字节码的行号指示器.Java虚拟机规范中唯一一个没有OutOfMemoryError情况 ...
- XML CDATA识别“<,>”
http://www.w3school.com.cn/xml/xml_cdata.asp 术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Dat ...
- 关于11G DataGuard 日志传输的案例
案例探讨 在归档和非归档模式下,配置参数log_archive_dest_2后,DG的备库是否传输日志. 案例环境描述 本次环境如下,一套RAC+单机DG,然后从DG还原出来一个单独的测试库A,测试库 ...
- [macOS] finder变慢提速
原文地址:http://ntfs-formac.com/fix-slow-finder-macos-sierra/ 我采取的是第二种方法,够简单,直接在终端执行 rm ~/Library/Caches ...
- CentOS7 源码编译安装Tengine
简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.它的目的是打造一个高效.安全的Web平台. 发展 Tengine的性能和 ...
- 【论文速读】Sheng Zhang_AAAI2018_Feature Enhancement Network_A Refined Scene Text Detector
Sheng Zhang_AAAI2018_Feature Enhancement Network_A Refined Scene Text Detector 作者 关键词 文字检测.水平文字.Fast ...
- 解决c# progressBar更新出现界面假死
最近一个项目需求中的一个功能是需要用progressBar反映处理文件的进度. 研究了Invoke和BeginInvoke方法. Control.Invoke 方法 (Delegate) :在拥有此控 ...
- 用Springboot实现文件下载功能
ApiOperation(value = "下载文件", httpMethod = "GET", notes = "downloadFile" ...
- JAVA锁有哪些种类,以及区别(转)
在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容如下: 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级 ...
- Sql语法注意事项
#分组 group by 作用:group by 子句可以将结果集按照指定的字段值一样的记录进行分组,配合聚合函数 可以进行组内统计的工作. 注意1:当在select中时,查询的内容中如果包含聚合函数 ...