1.定义类
class 类名:
代码
…..
注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯
2.self:
self指调用该函数的对象
3.创建对象
对象名=类()
4.添加获取对象属性
对象名.属性名=值
5._init_()方法:初始化对象
创建一个对象时默认调用,不需要手动调用
_init()_(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去
带参数的_init_()方法,可以进行初始化属性设置
6._str_()方法:
使用print输出对象的时候,默认打印对象的内存地址,如果类定义了_str_方法,那么就会打印从在这个方法中的return的属性
7._del_()方法
当删除对象时,python解释器默认调用_del_方法
8.经典类或旧式类
经典类:class 类名:
代码
旧式类:class 类名(object):
代码
9.继承:
多个类之间的所属关系,即子类默认继承父类的所有属性和方法
在Python中,所有类默认继承object类,object类是顶级类或基类;其他子类叫做派生类
单继承:一个子类只继承一个父类
多继承:一个子类同时继承多个父类
如果父类有同名属性和方法,优先使用第一个父类的
10.重写
如果子类和父类拥有同名属性和方法,子类创建对象调用属性和方法的时候,调用到的是子类里面的同名方法
11.print(子类.__mro__):输出子类继承的父类有哪些
12.super():调用父类方法
无参数:可以自动查找父类,调用顺序遵循__mro__()
带参数:super(当前类名,self).函数()
13.定义私有属性和方法
可以为实力属性和方法设置私有权限,即设置某个实例属性或实例方法不继承给子类
在属性和方法名前加两个下划线
14.获取和修改私有属性值
15.面向对象三大特性:
封装:
将属性和方法书写到类的里面的操作即为封装
封装可以为属性和方法添加私有权限
继承:
子类默认继承父类的所有属性和方法
子类可以重写父类属性和方法
多态:
传入不同的对象,产生不同的结果
16.多态:
定义:多态是一种使用对象的方式,子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行结果
好处:调用灵活,有了多态,更容易编写出通用的代码,做出通用的编程,以适应需求的不断变化
实现步骤:
定义父类,提供公共方法
定义子类,并重写父类方法
传递子类对象给调用者,可以看到不同子类执行效果不同
17.类属性:
类属性就是类对象所拥有的属性,它被该类所有的实例对象所共有
类属性可以使用类对象或者实例对象访问
优点:
记录的某项数据始终保持一致时,则定义类属性
实例属性要求每个对象为其单独开辟一份内存空间来记录时间,而类属性为全类所共有,仅占用一份内存,更加节省内存空间
类属性只能通过类对象修改,不能通过实例对象修改,如果通过实例对象修改类属性,表示的是创建了一个实例属性
18.类方法
特点:需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数
类方法使用场景:
当方法中需要使用类对象(如访问私有类属性等)时,定义类方法
类方法一般和类属性配合使用
4.静态方法:
特点:需要通过装饰器@staticmethod来进行修饰静态方法既不需要传递类对象也不需要传递实例对象(形参没有self/cls)
静态方法也能够通过实例对象和类对象去访问
使用场景:
当方法中既不需要使用实例对象,也不需要使用类对象时,定义静态方法
取消不需要的参数传递,有利于减少不必要的内存占用和性能消耗
5,异常:
当检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误提示,这就是所谓的异常
写法:
try:
可能出错的代码
except:
如果出现异常执行的代码
捕获指定异常类型:
try:
可能发生错误的代码
except 异常类型:
如果捕获到该异常类型执行的代码
注意:如果尝试执行的代码异常类型和要捕获的异常类型不一致,则无法捕获异常
一般try下方只放一行代码
捕获多个指定异常:
可以把要捕获的异
常类型的名字,放到except后,并使用元组的方式进行书写
捕获异常描述信息:
捕获所有异常
异常的else:
else表示的是如果没有异常要执行的代码
异常的finally
finally表示的是无论是否异常都要执行的代码,例如关闭文件
自定义异常:
在python中,抛出自定义异常的语法为raise异常类对象
#自定义异常类
class 异常类类名(Exception):
代码
def _str_(self):
return …
#抛出异常
raise 异常类名()
#捕获异常
except Exception…
6.模块
Python模块是一个Python文件,以.py结尾,包含了Python对象定义和Python语句
模块能定义函数,类和变量,模块里也能包含可执行的代码
导入模块写法:
import 模块名
from 模块名 import 功能名
from 模块名 import *
import 模块名 as 别名
from 模块名 import 功能名 as 别名
import:
from…import…:
from …import *
as定义别名:
定义模块
模块定位顺序:
当导入一个模块,Python解释器对模块位置的搜索顺序是:
1.当前目录
2.如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录
3.如果都找不到,Python会查看默认路径。UNIX下,默认路径一般为/usr/local/lib/python
模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录
注意:
自己的文件名不要和已有模块名重复,否则导致模块功能无法使用
使用from模块名import功能的时候,如果功能名字重复,调用到的是最后定义或导入的功能
_all_:
如果一个模块文件中有_all_变量,当使用from xxx import *导入时,只能导入这个列表中的元素
7.包:
定义:
包将所有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py文件,这个文件就称为包
制作包:
[New]——[Python Package]——输入报名——OK——新建功能模块
注意:新建包后,包内部会自动创建__init__.py文件,这个文件控制着包的导入行为
导入包:
方法一:
import 包名.模块名
包名.模块名
方法二:
必须在_init_.py文件中添加_all_=[ ],控制允许导入的模块列表
from 包名 import *
模块名.目标