类方法:
# 定义一个类
class Dog(object):
# 私有类属性
__tooth = 10
def __init__(self):
# 实例化对象的属性叫做 实例属性 self 是实例对象
self.skin = "black"
# # 普通方法
# def get_tooth(self):
# pass
# 类方法
# 1.传递的参数不是实例化对象 而是类本身
@classmethod
def get_tooth(cls):
# cls == Dog类 类对象
print("里面的类:", cls)
# 使用cls打印类属性
print(cls.__tooth)
# 不能使用类 调用实例属性
# print(cls.skin)
if __name__ == '__main__':
print("外面的类", Dog)
# 调用类方法
# Dog.get_tooth()
# 实例化对象也可以调用类方法
xiaohei = Dog()
xiaohei.get_tooth()
静态方法
# 静态方法
@staticmethod
def print_info():
print("这是一直毛发为白色,品种是英短长毛猫,来时英国,有户口")
# 普通方法 = 实例方法
def get_fish(self):
print("aa")
if __name__ == '__main__':
# 实例化对象 肉肉
rr = Mao()
# 使用实例化对象 调用静态方法
rr.print_info()
# 使用类对象 调用的静态方法
Mao.print_info()
# Mao.get_fish(rr)
'''
类方法,静态方法,实例方法比较
1.传递参数
类方法传递的是cls,类对象本身
静态方法没有传递任何参数
实例方法传递的是实例化对象
2.调用
类方法可以被 类对象和实例对象调用
静态方法可以被 类对象和实例对象调用
实例方法可以被 类对象和实例对象调用 但是在被类对象调用是 要传递实例对象作为参数
3.作用
类方法完成一些 有关类的操作
静态方法 完成的操作与 类对象和实例对象无关
实例方法 完成实例化对象的相关操作(最多的一种)
'''
初步异常
try:
# 可能出现问题的代码
open("text.txt", "r")
# 单个的except是可以捕捉所有异常
except:
# 出现问题之后 执行的代码 异常处理的代码
# 异常处理之后 其他代码也可以正常运行
open("text.txt", "w")
# 前面出现的异常 会导致后面的代码执行不了 于是推出捕捉异常
print("其他代码执行")
捕捉所有异常
try:
print(num)
# 捕捉所有异常
except Exception:
print("捕捉所有异常")
捕捉指定异常
try:
# 可能出现问题的代码
open("text.txt", "r")
# 捕捉指定的文件未找到错误
except FileNotFoundError:
print("捕捉错误")
捕捉多个异常
try:
# 可能出现问题的代码
# open("text.txt", "r")
# print(num)
print(1/0)
# 捕捉多个错误
except (FileNotFoundError, NameError, ZeroDivisionError):
print("捕捉错误")
捕捉异常信息
try:
# 可能出现问题的代码
open("text.txt", "r")
# print(num)
# print(1/0)
# 捕捉多个错误
except (FileNotFoundError, NameError, ZeroDivisionError) as result:
# 打印错误描述信息
print(result)
else语句
try:
# 可能出现问题的代码
# 使用w的模式 在没有该文件的情况下 自动创建文件
open("text.txt", "w")
# print(num)
# print(1/0)
# 捕捉多个错误
except (FileNotFoundError, NameError, ZeroDivisionError) as result:
# 打印错误描述信息
print(result)
else:
print("没有异常的时候执行的代码")
finally语句
try:
f = open("text2.txt", 'r') # 文件不存在错误
except Exception as result:
f = open("text1.txt", "w") # 创建文件
print(result) # 打印异常描述信息
else:
print("没有异常出现的代码")
finally:
# 无论前面的 执行哪里的代码 这里的代码必须执行
print("这里是必须执行的代码")
f.close()
异常嵌套
try:
f = open("stu1.txt", "r")
try:
while True:
content = f.readline()
if len(content) == 0:
# 结束循环
break
# 没有读取完 则打印
print(content[:-1])
# 处理异常 不小心手动退出
except Exception as result:
print(result)
# 无论如何 都要执行的代码
finally:
# 关闭文件
f.close()
except Exception as e:
print("文件不存在")
print(e)