码迷,mamicode.com
首页 > 编程语言 > 详细

Python面向对象(约束,异常处理,md5加密)(五)

时间:2018-12-21 21:20:44      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:bst   nim   百度贴吧   upd   ack   bug   cti   error   hex   

1. 类的约束

    1. 写一个父类. 父类中的某个方法要抛出一个异常 NotImplementedError 

class Base:
    def login(self):
        raise NotImplementedError("没有实现登录")

class Person(Base):
    def login(self):
        print("正常使用")

class SpecialPerson(Base):
    def denglu(self):
        print("非正常")

def func(obj):
    obj.login()

p1 = Person()
p2 = SpecialPerson()
func(p1)
func(p2)

    2. 抽象类和抽象方法

        from abc import ABCMeta, abstractmethod

        class Base(metaclass = ABCMeta):

            @abstractmethod

            def fangfa(self):

                pass

from abc import ABCMeta,abstractmethod
class Animal(metaclass = ABCMeta):
    @abstractmethod
    def chi(self):pass
    def run(self):
        print("能跑")

class Cat(Animal):
    def chi(self):
        print("吃鱼")
    def dong(self):
        print("guyong")

c = Cat()
c.chi()
c.dong()
c.run()

2. 异常处理.

 try except raise finally

    try:

        代码

    except 异常类:

        除了错, 如何处理异常

    except 异常类:

        除了错, 如何处理异常

    except 异常类:

        除了错, 如何处理异常

    else:

        当程序不出错

    finally:

        不管出不出错, 都要执行

    raise 异常类("信息")

    如何自己定义异常

    class 类(Exception):

        pass

    堆栈

    import traceback

    traceback.format_exc()

import traceback
class GenderException(Exception):
    pass

class Person:
    def __init__(self,name,gender):
        self.name = name
        self.gender = gender

    def xizao(self):
        print(f"{self.name}在洗澡")

def zaotang(ren):
    if ren.gender == "":
        ren.xizao()
    else:
        raise GenderException("性别不对,去对门看看")

try:
    p1 = Person("tom","")
    p2 = Person("jerry","mouse")
    zaotang(p1)
    zaotang(p2)
except GenderException:
    ret = traceback.format_exc()
    print(ret)

3. MD5加密

    import hashlib

    obj = hashlib.md5(b‘盐‘)

    obj.update(b"要加密的内容")

    print(obj.hexdigest())

import hashlib
def my_md5(c):
    obj = hashlib.md5(b"safgd")
    obj.update(c.encode("utf-8"))
    return obj.hexdigest()

print(my_md5("1996"))

4. 日志处理 

    等级:

        critical: 50

        error:40

        warning:30

        info:20

        debug:10

 

import logging

logging.basicConfig(filename=x1.txt, # 把日志信息写入的文件名
                    format=%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s,
                    datefmt=%Y-%m-%d %H:%M:%S, # 时间的格式
                    level=20) # 当前配置表示 10以上的分数会被写入日件

logging.critical("")
logging.error("很高")
logging.warning("一般")
logging.info("较低")
logging.debug("最低")
logging.log(500,"自己定")

file_handler = logging.FileHandler(l1.log, a, encoding=utf-8) # 创建文件
file_handler.setFormatter(logging.Formatter(
    fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")) # 设置日志文件的格式
logger1 = logging.Logger(腾讯qq, level=40) # 创建一个日志文件处理对象
logger1.addHandler(file_handler) # 把文件添加到日志

logger1.error("运行出错了")

file_handler2 = logging.FileHandler(l2.log, a, encoding=utf-8)
file_handler2.setFormatter(logging.Formatter(
    fmt="%(asctime)s - %(name)s -%(levelname)s -%(module)s: %(message)s"))
logger2 = logging.Logger(百度贴吧, level=logging.DEBUG)
logger2.addHandler(file_handler2)

logger2.debug("有点小问题")

 

Python面向对象(约束,异常处理,md5加密)(五)

标签:bst   nim   百度贴吧   upd   ack   bug   cti   error   hex   

原文地址:https://www.cnblogs.com/fu-1111/p/10158722.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!