【Python】学习摸鱼技术的第12天

类方法:

# 定义一个类
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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值