DAY21、面向对象
一、内存管理与正则语法
1、内存管理:
引用计数:垃圾回收机制工作原理
引用就 +1 ,释放就 -1 ,当计数为0时,就会被垃圾回收机制回收
标记清除:解决循环导入引用导致的内存泄漏
标记:GC roots 可以直接或间接访问到的数据,都被标记为存活状态
清除:触发标记清除动作后,将所有存活状态的变量复制到新空间,将老空间中的所有值清空
分代回收:提高回收效率的优化策略
分代:将长期存活的变量移至更高代,检查频率降低
回收:回收的依据还是采用引用计数
2、正则:import re
方法:findall | match | split| sub
findall :全文匹配,返回值是列表
res = re,findall('','')
分组:通过分组加(),拿到匹配到的结果中的指定信息
res = re.findall('((\w*?)>)', '<a>abc</a>')
print(res) # [('a>', 'a'), ('a>', 'a')]
操作分组的方法:
(?P<name>...):有名分组
返回值是match匹配的结果对象,可以.group(组序号|组名)来取具体组的信息
res = re.match('(\d{3})(?P<center>\d{3})(\d{3})', '123456789')
print(res.group('center') # center就是组名
compile:传入一个有正则语法的普通字符串,得到一个可以调用正则方法的正则字符串中
r = re.compile('(\w*?)>')
print(r.findall('<a>abc</a>'))
sub:替换
res = re.sub('(\d{3})(?P<center>\d{3})(\d{3})', r'\2\1\3', '<123456789>')
print(res)
二、面向对象
1、面向过程:
重过程:解决问题,考虑的是解决问题的流程
解决问题的思路清晰,但拓展性不强
面向对象:
重对象:解决问题,找到解决问题的对象
解决问题的思路可能不止一条(理解解决问题的难度增加),即编程的复杂度高于面向过程,但扩展性强
重点:面向对象的核心体现是将数据和处理数据的程序封装到对象中
Ptyhon语言:面向对象的语言
Python用面向过程与面向对象两种方式解决问题
函数与方法
函数:通过函数名直接调用
方法:通过附属者.语法来调用
2、名称空间操作:内置 | 全局 | 局部
所有能产生名称空间对应的对象(存放地址的变量)有__dict__值
__dict__指向的就是附属对象的名称空间
def func():
a = 10
print(locals())
pass
func()
print(func.__dict__)
能产生名称空间的有:文件 | 函数 | 类
能产生名称空间的对象有__dict__这个值,通过这个值访问到名字与地址的对应关系
名称空间的使用:
def func():
pass func.__dict__['index'] = 10000
print(func.__dict__)
print(func.__dict__['index'])
print(func.index) func.add = lambda n1, n2: n1 + n2
print(func.__dict__)
print(func.add(10, 20))
3、类与对象
寻求一个类似函数与文件对象,可以额外添加功能与属性的对象
类:具有相同特征与行为个体集合的抽象
对象:有特征、行为的具体个体,就是类的具体体现
语法:
类的声明:class
class 类名: #class定义类语法的关键字
pass
对象的产生:对象的实例化
对象1 = 类名()
对象2 = 类名()
对象3 = 类名()
学习重点:自定义类的实例化对象
class Student:
pass
stu = Student() print(id(Student))
print(id(stu)) print(Student.__dict__)
print(stu.__dict__) stu.__dict__['name'] = 'Bob'
print(stu.name) def fn():
print('学习')
stu.study = fn
stu.study() # 实例化一个Egon同学,有学习功能
# 实例化一个Liu某同学,有学习功能
s1 = Student()
s2 = Student()
print(id(s1), id(s2), id(Student))
s1.name = 'Egon'
s1.study = fn
s2.name = 'Liu某'
s2.study = fn
print(s1.__dict__, s2.__dict__)
print(s1.name, s2.name)
4、小结:
重点:类一旦被加载(随着所属文件的加载就加载),就会进入类的内部执行类中的所有代码
类拥有自己的名称空间,类的对象也有自己的名称空间
可以通过.语法添加或使用属性和方法
属性的访问顺序:优先加载自身的名字,如果没有再考虑类的
DAY21、面向对象的更多相关文章
- day21——面向对象初识、结构、从类名研究类、从对象研究类、logging模块进阶版
day21 面向对象的初识 面向对象第一个优点: 对相似功能的函数,同一个业务下的函数进行归类,分类. 想要学习面向对象必须站在一个上帝的角度去分析考虑问题. 类: 具有相同属性和功能的一类事物. 对 ...
- python学习day21 面向对象(三)嵌套/特殊方法
1.嵌套 类/方法/对象都可以当做变量或嵌套到其他类型中. 函数的参数可以是任意类型. 可哈希(不可变)数据类型可以做字典的key. 类和对象可以做字典的key. 2.特殊方法(8) __init__ ...
- python全栈开发day21面向对象初识总结
- python学习之旅
python学习分类 python基础 +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...
- 面向对象—多态、鸭子类型(Day21)
编程原则java具有自己的编程原则和设计模式,不能多继承.python的编程原则:1.开放封闭原则:开放是对扩展是开放的,封闭是对修改是封闭的(已经写完的代码程序是不能修改的).2.依赖倒置原则:高层 ...
- day34 反射、面向对象内置方法:如__str__、面向对象的软件开发
Python之路,Day21 = 反射.面向对象内置方法:如__str__.面向对象的软件开发 几个内置查看的方法使用 .__base__ 查看类的继承结构.mro() 对象找属性的顺序存在里面 -- ...
- angular2系列教程(六)两种pipe:函数式编程与面向对象编程
今天,我们要讲的是angualr2的pipe这个知识点. 例子
- 一起学 Java(二)面向对象
一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
随机推荐
- 带你精读你不知道的Javasript(上)(一)
斌果在这几天看了下你不知道的js这本书,这本书讲的东西还是挺不错的,其中有很多平时我压根没接触到的概念和方法.借此也可以丰富一下我对js的了解. 第一部分 第一章 作用域是什么? 1.程序中一点源代码 ...
- Python:黑板课爬虫闯关第一关
近日发现了[黑板课爬虫闯关]这个神奇的网页,练手爬虫非常的合适 地址:http://www.heibanke.com/lesson/crawler_ex00/ 第一关非常的简单 get 请求网址,在响 ...
- 让ASP.NET Core支持GraphQL之-GraphQL的实现原理
众所周知RESTful API是目前最流行的软件架构风格之一,它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. RESTful的优越性是毋庸置疑 ...
- 数据结构系列(4)之 B 树
本文将主要讲述另一种树形结构,B 树:B 树是一种多路平衡查找树,但是可以将其理解为是由二叉查找树合并而来:它主要用于在不同存储介质之间查找数据的时候,减少 I/O 次数(因为一次读一个节点,可以读取 ...
- SLAM+语音机器人DIY系列:(三)感知与大脑——4.音响麦克风与摄像头
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...
- 在嵌入式设备中使用 JavaScript 的前景
by Conmajia PC上的JavaScript已经发展到ECMAScript 6(ES6),马上ES10都快出来了(虽然还是草案),但是硬件上的JS却很少听说.这几年手持设备/可穿戴设备的发展非 ...
- DSAPI WIN7风格
在Winform项目中,有时需要将UI变成适应Vista/Windows7/8/10的风格,通过"选用"以下代码来使你的UI支持系统主题渲染. 注:该功能不支持XP,建议使用DS控 ...
- MySQL 笔记整理(10) --MySQL为什么有时会选错索引?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 10) --MySQL为什么有时会选错索引? MySQL中的一张表上可以 ...
- Redis的值value(数据结构类型)
Redis的数据结构类型,指的是redis的值的value类型: Redis的常用数据结构类型:string,list,set,sortedSet,hash 一.sting的类型 string类型是r ...
- html和css的使用方法以及样式
布局步骤 第一步: 清除默认样式第二步: 划分模块第三步: 设置模块的大小以及位置第四步: 划分下一级模块 html和css 引入网页头像 <link rel="shortcut ic ...