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

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

 










转载于:https://www.cnblogs.com/bilx/p/11412644.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值