1. 类的约束
1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError (重点)
2. 抽象类和抽象方法
# 语法 # from abc import ABCMeta, abstractmethod # class Base(metaclass = ABCMeta): # @abstractmethod # def fangfa(self):pass # 抽象类 from abc import ABCMeta, abstractmethod # 抽象类不能创建对象 class Animal(metaclass=ABCMeta): # 写完这个东西就是抽象类 @abstractmethod # 抽象方法 def chi(self): pass # 抽象类中是可以有正常的方法 def dong(self): print('动物会动') # class Cat(Animal): # 此时猫里面也有一个抽象方法, 此时的猫是无法创建对象的 # pass # # c = Cat() # 此时是报错的 class Cat(Animal): def chi(self): # 重写父类中的抽象方法 print('猫喜欢吃鱼') c = Cat() c.chi() # 猫喜欢吃鱼 c.dong() # 动物会动
2. 异常处理.
# 语法格式 try: # 代码 except 异常类: # 除了错, 如何处理异常 except 异常类: # 除了错, 如何处理异常 except 异常类: # 除了错, 如何处理异常 else: # 当程序不出错 finally: # 不管出不出错, 都要执行 try: print(1/0) # f = open("哈哈哈哈哈", mode="r") # d = {[]:123} except ZeroDivisionError: # 可以处理所有错误 print("除以0出错了") except FileNotFoundError: print("文件不存在的错误") except Exception: # 兜底的 print("其他错误") else: # 当try中的代码不产生任何错误的时候. 会自动的执行else里的代码 pass finally: # 最终. 不管出错还是不出错. 都要执行最后的finally 一般用来收尾 print("哈哈哈哈哈哈哈哈啊哈")
3. MD5
import hashlib # MD5需要导入这个模块 # 加密的内容(需要是字节类型) obj = hashlib.md5(b'liuliuliuliuliuliu') # 加盐 obj.update('123456'.encode('utf-8')) # 把要加密的内容给md5 print(obj.hexdigest()) # 拿到密文b8de0312dbab0c85cba71b121456f98c # 应用 def my_md5(s): obj = hashlib.md5(b'liuliuliuliuliuliu') # 123456的MD5密文 obj.update(s.encode('utf-8')) return obj.hexdigest() print(my_md5('123456')) # b8de0312dbab0c85cba71b121456f98c username = 'alex' password = 'b8de0312dbab0c85cba71b121456f98c' # 登陆 uname = input('请输入用户名:') upwd = input('请输入你的密码:') if uname == username and my_md5(upwd) == password: print('登陆成功') else: print('登陆失败')