面向對象

約束

class BaseMessage(object):
    def send(self):
        """
        必須繼承BaseMessage,而後其中必須編寫send方法.用於完成具體業務邏輯
        """
        raise NotImplementedError(".send() 必須被重寫")
        #raise Exception(".send() 必須被重寫")


BaseMessage 類用於約束,約束其派生類:保證派生類中必須編寫send方法,否則執行可能會報錯
View Code

Python的約束:

Python的約束主要經過抽象類和主動拋出異常來實現ide

接口:

   接口是一種數據類型,接口中不容許在方法內部寫代碼,只能約束繼承它的類必須實現接口中定義的全部方法.編碼

抽象類:

from abc import ABCMeta, abstractmethod


class Base(metaclass=ABCMeta):

    def f1(self):
        print("正常方法")

    @abstractmethod
    def f2(self):
        print("抽象方法")


class Foo(Base):

    def f2(self):
        print(666)
抽象類

 

自定義異常

class Base:
    """
    必須繼承Base,而後必須編寫其中的f1方法
    """
    def f1(self, a1):
        raise NotImplementedError("相應的提示信息")


class Foo(Base):
    def f1(self, a1):
        pass
主動拋出異常

 

hashlib:

主要用於加密(md5),爲了防止撞庫,因此必定要加鹽,由於加密後不能夠反解,所以進行校對時能夠使用密文進行,還需注意的是md5加密的是字節,因此須要用encode進行編碼加密

import hashlib

salt = b"asdfghjkl;ei"


def func(pwd):
    # 實例化對象
    obj = hashlib.md5(salt)
    # 寫入加密字節
    obj.update(pwd.encode("utf-8"))
    # 獲取密文
    return obj.hexdigest()


name = input(">>>")
pwd = input(">>>")
if name == "123" and func(pwd) == "fb5e8b7ebcd71d0ac0ecf803ff8aba74":
    print("登錄成功")
View Code

logging:日誌文件

logger = logging.basicConfig(filename='xxxxxxx.txt',
                             format='%(asctime)s - %(name)s - (levelname)s -%(module)s:  %(message)s',
                             datefmt='%Y-%m-%d %H:%M:%S',
                             level=30)
# 參數設置
# 等級
# logging.debug('x1') # 10
# logging.info('x2')  # 20
# logging.warning('x3') # 30
# logging.error('x4')    # 40
# logging.critical('x5') # 50
# logging.log(10,'x6')

# 自定義日誌
logging.error('x4')
日誌文件

獲取當前錯誤的堆棧信息spa

import traceback

def func():
    try:
        a = a +1
    except Exception as e:
        # 獲取當前錯誤的堆棧信息
        msg = traceback.format_exc()
        logging.error(msg)
func()
View Code
import logging


# 建立一個操做日誌的對象logger(依賴FileHandler)
file_handler = logging.FileHandler('log1.log', 'a', encoding='utf-8')
file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s"))

logger1 = logging.Logger('s1', level=logging.ERROR)
logger1.addHandler(file_handler)


logger1.error('1')



# 在建立一個操做日誌的對象logger(依賴FileHandler)
file_handler2 = logging.FileHandler('log2.log', 'a', encoding='utf-8')
file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s"))

logger2 = logging.Logger('s2', level=logging.ERROR)
logger2.addHandler(file_handler2)

logger2.error('2')
自定義日誌
相關文章
相關標籤/搜索