1.类方法
# 定义一个类 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()
2.静态方法
class Mao(object): # 静态方法 @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.作用 类方法完成一些 有关类的操作 静态方法 完成的操作与对象和实例化对象无关 数量方法完成实例化对象的相关操作(最多的一种) """
3.烤地瓜
""" 1.烤地瓜 传一个时间进去 0-3 打印出 这是生的 3-6 打印出 半生不熟 6-9打印出 熟了 9-... 糊了 可以叠加 """ class Potato(object): def __init__(self): self.status = None self.total_time = 0 def cook(self, time): print(time) # 将烤的时间 加入到总时间 self.total_time += time print("烤地瓜的总时间", self.total_time) if self.total_time < 3: self.status = "不熟" elif self.total_time < 6: self.status = "半生不熟" elif self.total_time < 9: self.status = "熟了" else: self.status = "糊了" def __del__(self): print(f"地瓜烤了{self.total_time}分钟,状态是{self.status}") if __name__ == '__main__': # 实例化一个对象 dg = Potato() dg.cook(4) dg.cook(3)
4.随堂练习
''' 【“深圳“,”吉林“,”武汉“,“西安”】 都是红码 红码不能进 请声明一个学校类 这个类 给出反应 上面经过这四个城市的人都不能进 首先要判断是不是红码 然后判断是不是经过这四个城市 (经过这四个城市不能进) 同时经过这四个城市 并且是红码的 需要隔离 不是红码的 经过这四个城市的需要做核酸 是红码 但没有经过这四个城市的 需要做核酸且隔离 如果是黄码 则待定接受询问 1:绿码 2.黄码 3.红码 { "name":"刘鸡鸡","city":["吉林”,"长沙","益阳","南吕" ],"code" : 1 { "name":"张恩","city":["长沙","益阳",”南吕"],"code" : 3} { "name": "饶鹏鹏","city":["长沙","益阳","南吕"],"code" : 2} { "name":"颜庆","city":[“西安","长沙",“益阳",“南昌"],"code " : 3} 输入上面的字典 输出是对学生需要进行的操作 ''' # class Epidemic(): def __init__(self): self.e_city_list = ["深圳", "吉林", "武汉", "西安"] def check(self): if stu["code"] == 3 and stu["city"] in self.e_city_list: print(stu["name"], "不能进学校,并且需要做核酸且隔离") elif stu["code"] == 3 and stu["city"] not in self.e_city_list: print(stu["name"], "不能进学校,需要做核酸") elif stu["code"] == 2 and stu["city"] in self.e_city_list: print(stu["name"], "保安室接受询问,需要做核酸") elif stu["code"] == 2 and stu["city"] not in self.e_city_list: print("保安室接受询问") elif stu["code"] == 1 and stu["city"] in self.e_city_list: print("入校后做核酸") else: print("入校") if __name__ == '__main__': ze = Epidemic() stu = {"name": input("你的姓名"), "city": str(input("你经过的城市")), "code": int(input("你的健康码"))} ze.check()
5.初步异常
# 报错位置 ''' FileNotFoundError: [Errno 2] No such file or directory: 'text.txt' FileNotFoundError: 错误的名称 [Errno 2] 错误编码 No such file or directory: 'text.txt' 错误的描述 错误地址:不要死盯 系统出错代码,看自己写的代码出错位置 File "D:\py代码\16\06-异常初步.py", line 1, in <module> 从下往上数 第一行自己写的代码 报错源 open("text.txt", "r") : 报错代码 ''' try: # 可能出现问题的代码 open("text.txt", "r") # 单个的except是可以捕捉所有异常 except: # 出现问题之后的代码 异常处理的代码 # 异常处理之后 其它代码也可以正常运行 open("text.txt", "w") # 前面出现的异常 会引发后面正常的代码执行不了 于是推出捕捉异常 print("其他代码执行")
6.捕捉所有异常
# try: # print(num) # # # 捕捉所有异常 # except Exception: # print("捕捉所有异常") try: # 可能出现问题的代码 open("text.txt", "r") # 指定的文件未找到错误 except FileExistsError: open("捕捉错误")
7.捕捉字典异常
# try: # print(num) # # # 捕捉指定异常 # except NameError: # print("捕捉所有异常")