python约束 与MD5加密写法

python 中约束写法有两种

  1. 常用的通过继承关系主动抛出异常
  2. 通过抽象类+抽象方法

1 常用的通过继承关系主动抛出异常写法

在本send方法中报错不会抛出异常,

class BaseMessage(object):
    def send(self):
    """
    必须继承BaseMessage,然后其中必须编写send方法。用于完成具体业务逻辑。
    """
    raise NotImplementedError(".send() 必须被重写.")   # 主动抛异常NotImplementedError,用exception也行但显得不专业
    # raise Exception(".send() 必须被重写.")

class Email(BaseMessage):               # 继承 BaseMessage  必须约束有send方法才行
    def send(self):
        pass                 # 发送邮件类
    def f1(self):
        pass
    def f2(self):
        pass

class Wechat(BaseMessage):           # 继承 BaseMessage  必须约束有send方法才行
    def send(self):
        pass               # 发送微信类
    def f1(self):
        pass

BaseMessage类用于约束,约束其派生类:保证派生类中必须编写send方法,不然执行可能就会报错。

2 通过抽象类+抽象方法 (不常用因为编写麻烦)

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from abc import ABCMeta,abstractmethod

class Base(metaclass=ABCMeta): # 抽象类

    def f1(self):
        print(123)

    @abstractmethod                  # 抽象方法装饰器
    def f2(self): # 抽象方法
        pass

class Foo(Base):
    def f2(self):
        print(666)

obj = Foo()
obj.f1()

加密

加密是不可逆的,为了防止撞库 必须有加盐操作

import hashlib         # 导入hashlib 模块

SALT = b'2erer3asdfwerxdf34sdfsdfs90'               #  盐 盐必须是字节码

def md5(pwd):                # 传入密码
    # 实例化对象      加盐
    obj = hashlib.md5(SALT)                                      
    # 写入要加密的字节
    obj.update(pwd.encode('utf-8'))
    # 获取密文
    return obj.hexdigest() # 21232f297a57a5a743894a0e4a801fc3 # 66fbdc0f98f68d69cd458b0cee975fe3 

user = input("请输入用户名:")
pwd = input("请输入密码:")
if user == 'oldboy' and md5(pwd) == 'c5395258d82599e5f1bec3be1e4dea4a':
    print('登录成功')
else:
    print('登录失败')

猜你喜欢

转载自blog.csdn.net/qdPython/article/details/112672431