2018年7月24日初次接触面向对象

昨天io模块知识的回顾补充: 用json模块可以把程序中的数据转换为字符串类型存储到文件中,但是字符串类型不安全,可以用记事本 直接打开查看里面的的所有内容

所以经常用的是pickle模块将程序中的数据转换为二进制的形式存储到文件中,用记事本打开是一串乱码

存储数据的时候如果模式写成w,意思就是将源文件中的全部内容直接以覆盖的形式存储到目标文件中

open在w模式下是创建文件,如果文件已存在,就以覆盖的形式直接修改文件的内容,在r模式下是读取文件

上午第一个视频的最后讲的是代码的容错方式,怎么快速地创个存储数据的文件,用try:  except:

如果要想把程序中所有的用户信息或者文章信息都永久地保存下来,必须要先创建一个文件, 并且文件里面不能为空,比如可以先写一个空字典

读取数据: load(open("articles.dat","rb"),errors = "ignore") 这里面errors的意思是:读取数据的时候,数据的格式如果出现问题的话它会忽略的, 但是文件里面没有数据它是不能忽略的,照样会报错

定义的两个函数,一个是读取文件中的数据,另一个是向文件中写入数据: 用到了容错的正规操作:异常处理(try  except):如果没有读取到文件/或者文件内容读取失败则创建文件

def load_data():     try:        # 尝试运行代码:如果出错~就运行except中的代码         print(">>>>>>程序正在加载数据")         data.users = pickle.load(open("users.dat", "rb"), errors='ignore')         data.articles = pickle.load(open("articles.dat", "rb"), errors='ignore')     except:         print(">>>>>数据文件读取失败,创建数据文件")

        # 初始化创建文件         save_data()

# 向文件中保存数据 def save_data():     pickle.dump(data.users, open("users.dat", "wb"))     pickle.dump(data.articles, open("articles.dat", "wb"))

把程序中一个不是二进制的对象,以二进制的方式存储到文件中:序列化存储 将对象按照一定的顺序排列起来,拆分成二进制数据存储! 从二进制文件中,读取数据->转换成程序中的某个对象:反序列化 

对象->文件 pickle:序列化:按照一定的顺序拆分成二进制数据 json:类型转换:直接转换成字符串

**************************************************                      面向对象的学习      

今天遇到的新单词: parameter   n参数 initiation  n开始

面向对象是一种编程思想,是在面向过程的基础上进行完善和补充,通过对象和 对象之间的相互协作完成项目功能的开发。 之前是面向过程的函数式开发方式:代码中封装了大量的包含处理步骤的函数,只适合中小型项目开发, 如果遇到大型项目的开发[代码的逻辑处理方式不够成熟,容易导致代码高耦合!]

函数  vs 方法: 类型外边定义的函数叫做函数 类型里面定义的函数叫做方法,方法是一种特殊的函数,只能在类型中使用! 注意:方法和函数的最大的区别:第一个参数可以隐式接受当前对象作为实际参数 方法是定义在类型的内部的! 方法的调用必须通过对象的引用变量调用 author = Author() author.introduction()

函数中的任何形式参数,在调用的时候都需要明确的传递数据 函数是定在在类型的外部的! 函数的调用直接通过函数名称调用

面向对象编程:其实就是将项目中需要的各种数据类型、功能封装成对象、函数 通过对象、函数之间的相互协作,完成功能开发。

什么是类型:数据类型的简称,也称为“类”,可以自定义,是一个具有某种特征的数据类型。 类型中需要定义对象需要的特征[属性|变量]和行为[方法] 代码中可以通过class关键字,自定义声明一个数据类型,见名知意,首字母要大写

对象:有具体特征的事物,也就是定义的类型中的一个具体的值 代码中的对象,需要通过类型来创建 如:tom = Person('汤姆', 18, '男') 通过类型创建对象时,自动调用执行__new__(),和__init__()方法,将对象需要的数据传递过去 __new__()方法创建对象,__init__()方法初始化数据  tom:变量,存储了Person()对象的内存地址 对象的引用变量【变量中存放的是可以引用到对象的内存地址】 使用对象:直接通过变量操作对象 print(type(tom))--> <class '__main__'.Person>

语法:对象的特征是需要在类型中定义的! 在通过类型创建对象时,才会给具体的特征赋值 给对象的特征赋值,固定语法:在__init__()函数中操作 class Author: # 给对象的特征赋值,在__init__()中进行操作  def __init__(self, username, password, nickname):      self.username = username      self.password = password      self.nickname = nickname

在Python中,有一种特殊的函数:魔法函数 每个魔法函数有一些特定的功能,方法名称都是固定的 魔法函数的命名规则:函数的前后各有两个下划线!

对象的属性和方法

类之间的开发到代码分层开发: 界面层->服务类型层,数据定义类型层,自定义数据类型层,

类型后边带括号和不带括号的区别?

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

工具 | 学习总结:当我学完Python我学了些什么

本文是本人学完Python后的一遍回顾,加深理解顺便留作手册以备查阅。 学习Python的这几天来,觉得Python还是比较简单,容易上手的,就基本语法而言,...

221100
来自专栏思考的代码世界

Python编程从入门到实践之函数2|第9天

向函数传递列表很有用,这种列表包含的可能是名字、数字或更复杂的对象(如字典)。将列表传递给函数后,函数就能直接访问其内容。

37670
来自专栏前端说吧

【消灭代办】第一周 - 敏感词判断

  一堆字符串组成的数组,给你一个字符串,让你去查找这个字符串是否在这个数组当中?

12210
来自专栏思考的代码世界

Python编程从入门到实践之字典|第5天

在Python中,字典是一系列键—值对。每个键都与一个值相关联,你可以使用键来访问与之 相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将...

37190
来自专栏JavaQ

多参数方法进阶

很多高级工程师还在写包含N个参数的方法、使用setter方法构造实例,其实这些方式都是过时并且有很大缺陷的,本篇将深入讲解这些问题及解决方法。 多参数方法的问题...

348110
来自专栏Python专栏

10个Python面试常问的问题

18150
来自专栏C/C++基础

C++ new的三种面貌

C++中使用new运算符产生一个存在于Heap(堆)上对象时,实际上调用了operator new()函数和placement new()函数。在使用new创建...

12310
来自专栏编程

linux基础(三)

一、文本处理工具 1、文本查看工具less和cat cat -E filename 能看到行的结束符 -A filename 能看到tab键 回车 (hexdu...

29970
来自专栏木木玲

设计模式 ——— 模板方法模式

11920
来自专栏北京马哥教育

Python程序员最常犯的十个错误,看完你自己都笑了

本文由马哥教育Python自动化实战班4期学员推荐,转载自简书,作者为EarlGrey,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出。 ...

28940

扫码关注云+社区

领取腾讯云代金券