【三种方法调用】
1. 类中的方法区分为普通方法(self),静态方法(@staticMenthod),类方法@classMenthod,隐式参数(cls)
<1> 普通方法:第一个参数 self 代表实例对象本身,可以使用 self 直接引用定义的实例属性和普通方法;如果需要调用静态方法和类方法,通过「 类名.方法名() 」调用即可。
<2> 静态方法:使用「 类名.静态变量 」引用静态变量,利用「 类名.方法名() 」调用其他静态方法和类方法;如果需要调用普通方法,需要先实例化一个对象,然后利用对象去调用普通方法。
<3> 类方法:第一个参数 cls 代表类本身(等价),通过「 cls.静态变量 」或「 类名.静态变量 」引用静态变量,利用「 cls.方法名() 」或「 类名.方法名() 」去调用静态方法和类方法;如果需要调用普通方法,需要先实例化一个对象,然后利用对象去调用普通方法。
用法建议:
* 静态方法和类方法是针对类定义的,除了可以使用类名去调用,也可以使用实例对象去调用,但是不建议使用实例对象调用。
* 一般来说, 如果方法内部涉及到实例对象属性的操作,建议用普通方法.
如果方法内部没有操作实例属性的操作,仅仅包含一些工具性的操作,建议使用静态方法;
如果需要对类属性,即静态变量进行限制性操作,则建议使用类方法。
2. 类的继承 与 super():
super().__init__(),就是继承父类的__init__()方法,同样可以使用super()去继承其他方法
【字符串前缀】
Python 字符串前加f,r,u,b的含义
f: 表示字符串内支持大括号内的python表达式,如:
logger.info(f"Total time taken: {time.time() - start_time}")
r: 去掉反斜杠的转义机制,如下面例子,表示单纯字符串而不表示换行
logger.info(r"Test\n\n\n")
logger.info(r"C:dir1\dir\2")
u:一般出现在中文字符串前,防止出现乱码
b: 表示这是一个bytes类型对象,在网络编程中,服务器和浏览器只认bytes类型数据,如:
response = b'hello world'
【路径处理】
os.path.abspath(__file__): 获取当前文件的绝对路径,包含当前文件名
os.path.dirname(__file__) :去掉文件名,返回当前文件的上层目录
示例:
os.path.dirname(os.path.abspath(__file__))
os.listdir(path): 返回一个列表,包含指定路径下所有的文件名以及文件夹名
os.getcwd(): 获取当前路径的字符串
os.path.join(path1, path2 ...): 将多个字符串组成一个路径
示例:
path = os.path.join('/home' , 'user', 'documents', 'file.text')
path输出:/home/user/documents/file.text
说明:在Windows系统中路径分隔符是反斜杠\, 在Unix和Linux系统中路径分隔符为斜杠/,在使用os.path.join()拼接时会自动根据当前操作系统选择合适的分隔符来拼接。
【字典的排序】经过sorted排序后返回一个以(key,value)组成的列表,列表的每个元素是一个元组
按key排序:
lst = sorted(iter, key = lambda x:x[0], reverse=True)
按value排序:
lst = sorted(iter, key = lambda x:x[1], reverse=True)
【异常处理】
1. 关键字raise:主动抛出指定的异常,触发后程序停止
raise有三种用法:
<1> raise: 单独使用,直接根据程序自身运行引发异常类型
<2> raise exceptionName: 表示引发指定的异常类型
<3> raise exceptionName(reason): 表示引发指定的异常类型,并给出异常原因提示
示例:raise ValueError ('参数类型错误:', params)
2. 异常捕获
try:
# code
except Exception as e:
# 捕获异常以后的处理,如打印print(e.args)