python学习——约束、自定义异常、加密、日志操作

∥☆過路亽.° 提交于 2019-11-28 15:29:43
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'
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('密码错误')

 



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!