1.约束
类用于约束,约束其派生类:保证派生类中必须编写send方法,不然会报错
class BaseMessage(object): def send(self): """ 必须继承BaseMessage,然后其中必须编写send方法。用于完成具体业务逻辑 """ raise NotImplementedError('.send()必须被重写') class Email(BaseMessage): def send(self,x1): pass obj = Email() obj.send()
1.什么是接口
接口是一种数据类型,主要用于约束派生类中必须实现执行的方法。
python中不存在,Java和C#中存在
2.python中使用过什么来约束呢?
-抽象类+抽象方法:编写上麻烦,
-人为主动抛出异常,执行是会报错:抛出异常简单明了
3.约束时,抛出的异常是否可以用其他?
不专业:raise Exception('.send()必须被重写')
专业:raise NotImplementedError('.send()必须被重写')
4.以后看代码,多揣摩心思
5.写代码,用一下方法约束
class BaseMessage(object): def send(self): """ 必须继承BaseMessage,然后其中必须编写send方法。用于完成具体业务逻辑 """ raise NotImplementedError('.send()必须被重写') class Email(BaseMessage): def send(self,x1): pass obj = Email() obj.send()
6.应用场景:
多个类,内部都必须有某些方法时,需要使用基类+异常进行约束。
学员管理程序:
class IBase: def login(self): raise NotImplementedError('.send()必须被重写')#约束必须要有这个功能 class Student: def login(self): pass def score(self): pass class Teacher: def login(self): pass def exam(self): pass class Manager: def login(self): pass
2.自定义异常
异常处理
def func(path,prev): ''' 去path路径的文件中,找到前缀为prev的一行数据,获取数据并返回给调用者 ''' try: a = 1 except Exception as e: print(e) return a def show(): return 8 def run(): v1 = func() v2 = show()
自定义异常类
# 知识点:如何自定义异常 class MyException(Exception): def __init__(self,code,msg): self.code = code self.msg = msg try: # 知识点:主动抛出异常 raise MyException(1000,'操作异常') except ...
3.加密
实例方法:
import hashlib SALT = b'fdafefdaf' #创建密码过程 pwd = '123456' obj = hashlib.md5(SALT) obj.update(pwd.encode('utf8')) ret = obj.hexdigest() print(ret) def md5(pwd): # 实例化对象 obj = hashlib.md5(SALT)#括号中有内容是加盐的过程,b代表字节 # 写入要加密的字节 obj.update(pwd.encode('utf-8')) # 获取密文 return obj.hexdigest() usr = input('>>') pwd = input('>>') if usr == 'oldboy' and md5(pwd) == '27bbae46d6c33f3d2e87161b7336b028': print('登录成功') else: print('密码错误')