方法和函数的区别:
如果是函数调用,则调用时传几个参数,就会有几个实参
但是如果对方法调用,默认传递一个参数,所以方法中至少定义一个形参
类对象和实例对象都可以保存属性和方法
如果这个属性是所有的实例共享时,则应该将其保存到类对象中
如果这个属性是某个实例独有,则应该保存到实例对象中
一般情况下,属性保存在实例对象中,方法保存在类对象中
方法中不能直接访问类中的属性
方法的第一个参数,就是调用方法的对象本身
如果是p1调的,则第一个参数就是p1对象
如果是p2调的,则第一个参数就是p2对象
特殊方法:以双下划线开头,双下划线结尾,不要尝试调用特殊方法
init会在对象创建以后立即执行
init可以用来向新创建的对象中初始化属性
创建对象的流程:
1.创建一个变量
2.在内存中创建一个新对象
3.init(self)方法执行
4.将对象的id赋值给变量
可以为对象的属性使用双下划线开头,xx 双下划线开头的属性,是对象的隐藏属性,隐藏属性只能在类的内部访问,无法通过对象访问 但是可以通过_类名xx进行访问
一般情况下,使用下划线开头的属性都是私有属性,没有特殊要求,不建议修改
装饰器:
使用property装饰的方法,必须和属性名是一样的
@属性.setter/getter 提供读和写的权限
若子类只能实现父类的大部分功能,但是不能实现全部功能,则用继承
python支持多重继承,即一个类可以继承多个父类,不建议使用多重继承
实例方法:
在类中定义,以self为第一个参数的方法都是实例方法
实例方法在调用时,python会将调用对象作为self传入
当通过实例调用时,会自动将当前调用对象作为self传入
当通过类调用时,不会自动传递self
类方法:
在类内部使用@classmethod来修饰的方法属于
类方法 类方法第一个参数是cls,也会被自动传递,cls就是当前的类对象
类方法和实例方法的区别:类方法的第一个参数是self,而类方法的第一个参数是cls
静态方法:
在类中使用@staticmethod来修饰的方法属于静态方法
静态方法不需要指定任何默认参数,静态方法可以通过类和实例调用
静态方法,基本放是一个和当前类无关的方法,他只是一个保存到当前类中的函数 一般都是一些工具方法,和当前类无关
在程序中,没有被引用的对象都是垃圾
python有垃圾回收机制,不需要手动执行
特殊方法:
str (print函数打印)
repe(交互模式自动打印)
python中一个py文件就是一个模块
name为main的模块,为主模块
添加了的变量,只能在模块内部访问,在通过import *引入时,不会引入开头的变量 py执行代码前,需要被解释器先转换为机器码,然后再执行
所以我们在使用模块(包)时,也需要将模块的代码先转换为机器码然后再交由计算机执行
而为了提高程序运行的性能,python会在编译过一次之后,将代码保存到一个缓存文件中 这样在下次加载这个模块时,就可以不再重新编译而是直接加载缓存中编译好的代码即可
异常的传播:
如果函数中没有对异常进行处理,则异常会继续向函数调用处传播
如果函数调用处处理了异常,则不再传播,如果没有处理则继续向调用处传播
知道传递到全局作用域(主模块)如果依然没有处理,则程序终止,并且显示异常信息
Exception是所有异常的父类,所以如果exception后跟的是Exception,他也会捕获所有的异常
try是必须的,else语句有没有都行
except和finally至少有一个
目标文件和当前文件在同一级目录下,则直接使用文件名即可
在windows系统使用路径时,可以使用/来代替
或者使用来代替
或者也可以使用原始字符串 r' 文件' 表示目录时,可以使用..来返回一级目录
绝对路径应该从磁盘的根目录开始书写
open()打开文件时,默认是以文本文件的形式打开的,但是open()默认的编码为None
所以处理文本文件时,必须要指定文件的编码
通过read()读取文件中的内容
如果直接调用read()他会将文本文件的所有内容全部读取出来
如果读取的文件较大的话,会一次性将文件的内容加载到内存中,容易导致内存泄漏
'w' 写
'a' 追加
'r+'既可读又可写
就先酱吧~