专栏首页武军超python专栏2018年7月24日初次接触面向对象

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 条评论
登录 后参与评论

相关文章

  • Linux中怎么实现文件的拆分和合并

    linux中: 文件的合并: 创建两个文件a, b :touch a b  cat a > b 是把a的内容写到b中,b中的内容会被覆盖 cat a >...

    武军超
  • 2018年7月25日python中面向对象编程的练习

    今天遇到的新单词: parameter  n参数 IndentationError  n缩进错误 formatting n格式化

    武军超
  • 2018-7-17 python中函数的讲解

    定义函数的基本语法:【定义/声明函数、调用函数】 define 定义 param 参数

    武军超
  • 虚函数&多态

    对于经常被问到的虚函数和多态的问题,发现百度百科回答得十分详细,所以自己在百度百科上的解释进行总结 一、虚函数 (1)虚函数简介:在某基类中声明为virtua...

    Christal_R
  • Mybatis Mapper.xml继承机制

    Mybatis实际上隐藏了一个功能:Mapper.xml可以继承,这个在官方文档中并没有提到过,不过在这个issue (commit)里提到过。

    颇忒脱
  • SVN_Tortoisesvn 图标介绍

    Tortoisesvn 图标介绍 一个新检出的工作复本使用如下绿色的对勾重载。表示Subversion状态正常。 如果在提交的过程中出现了冲突,图标变成黄色感叹...

    Java学习
  • 基于用户的视角交叉口操作中经济手段的比较分析(CS CY)

    着眼于在互联环境下交叉路口操作中实现的不同经济手段,本文从旅行者的角度分析了它们的优缺点。旅行者的关注点围绕一种新工具是否易于学习和操作,是否可以节省时间或金钱...

    小童
  • Flutter中的常见表单组件

    在Flutter中,常见的表单组件有TextField单行文本框、TextField多行文本框、CheckBox、Radio、Switch、CheckBoxLi...

    拉维
  • mybatis映射文件之基本的增删改查

    说明:接口中的增删改方法可以有Integer、long、boolean返回值。在EmployeeMapper.xml中parameterType为输入的参数类型...

    绝命生
  • SpringBoot2 整合 Drools规则引擎,实现高效的业务规则

    B、规则流程:如果paramId不为null,参数标识是+号,执行添加规则,-号,执行移除规则操作。

    知了一笑

扫码关注云+社区

领取腾讯云代金券