这里写目录标题
- 面向对象思想
- 类
- 类的定义
- 类名的定义
- 类的构造函数的定义
- 类的属性
- 类的方法定义
- 继承
- 语法
- 关于构造函数问题
- 文件操作
- 绝对路径
- 相对路径
- pycharm获取绝对路径和相对路径
- 文件读写
- 读文件
- open()
- read()
- readline()
- readlines()
- 关闭文件
- 写文件
- open()
- write()
- 追加内容
- 读+写模式
面向对象思想
类
类的定义
class 空格 类名 冒号
类名的定义
类名常使用大驼峰命名法
类的构造函数的定义
def init(self, 参数):
self.属性=参数
构造函数的定义,有几个特殊的地方,首先,他的名字就叫_init_, 其次他有一个默认参数是self,效果就是c++中的this指针,下面属性的赋值都要用到this指针
注意 init前后一共四个下划线
而创建类的对象时,使用类名+括号,里面传入构造函数的参数
类的属性
py中类的属性无需单独进行定义,在构造函数里对谁进行了构造,谁就是类的属性
类的方法定义
仍然是def 方法名 (self,其他参数)
其中第一个方法,输出时可以对字符串进行乘法运算
第二个方法,使用了f-格式化字符串
继承
语法
在类名后面加上括号,里面填入父类的类名,就是继承了父类
这样的话 子类就继承了父类的所有的方法和属性
而对于方法和构造方法调用的逻辑是,优先看自己是否有对应的方法,如果没有,再去父类中寻找
关于构造函数问题
当我们继承了父类的构造函数,从而子类可以通过父类的构造函数进行一些属性的构造时,如果子类有自己独特的属性需要构造,那么就会想到在子类中单独对那个独特的属性进行构造,但是这样一来,子类的构造函数被调用了,就不会再去调用父类的构造函数了(如下附图)
所以,我们要用下面的方式来解决
即在子类的构造方法中,通过super()返回父类对象之后,先调用父类的构造函数,对相关属性进行构造,之后再进行自己独特的属性的构造
文件操作
绝对路径
相对路径
pycharm获取绝对路径和相对路径
可以获得文件的绝对路径和以最顶层项目文件夹为参考的相对路径
文件读写
读文件
open()
1、打开文件
open(路径,模式)
“r”:只读
“w”:只写
2、编码格式,如下图的encoding=“utf-8”
read()
使用open打开之后,会返回一个文件对象,该对象有一个read方法,会将文件的内容读到代码中
注意,这里有个细节,就是如果连续两次读取文件的话,第二次会读到空字符,因为程序会记录读到了哪个位置,第一次已经读到了程序的末尾,所以第二次再读就会是空
当然可以规定一次读多少字节,这样的话,第二次也会读到内容
readline()
f对象还有个readline方法,一次读取一行,他会根据换行符来判断是否进入了下一行,同时,他会读到换行符,并给到程序,所以输出的话,会每行之间多一行,那是读取到的换行符,加之printf会自动换行,二者共同作用导致的
小tips,如果读到了最后一行的下一行,那么readline()会返回空字符串,即“”,所以可以根据这个来进行循环读取
readlines()
他会读取全部内容,并且把每行的内容(包括换行符)当成列表的一个元素进行返回,如上图
所以,readlines会配合for循环进行使用,这样每次都输出一个元素,会输出一行的内容加一个换行,同时加之print自动换行,就形成上面那种跟readline一样的效果
关闭文件
两种方式,
关于第二种,with + open(…) as 文件操作对象命名,且接下来的文件操作都要进行缩进
写文件
open()
写文件时,要将“r”改为“w”
要注意的是,写文件与读文件有一点不同,就是如果在r模式下,文件路径不存在,那么会报错,但是在w模式下,哪怕根据路径找不到文件,那么也不会报错,而是自动创建文件。
第二点需要注意的是,如果输入的路径文件存在,那么使用w模式打开的话,会将文件的内容清空后进行写的操作,所以需要三思而后行
接下来我们还是可以传入encoding选择编码格式
write()
该函数是对文件执行写的操作,但是要注意,如上图所示,write函数不会执行默认换行
如果想要换行的效果,那么需要手动加上换行符
追加内容
如果不想情况文件的内容,而是想接着文件的内容继续写,那么就要将“w”换成“a”,表示追加模式,并且会在内容的最后一行进行追加,而不是另起一行,同样,如果文件名不存在,会创建一个新的文件
读+写模式
如果既想读到文件,又想向文件追加写入内容,那么有一个“r+”模式,他所返回的文件操作对象有read方法以及write方法,两个可以同时使用,但是在其他模式则不行,读就是读,写就是写,同时要注意,在当前模式下,write是追加写入内容