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('密码错误')