05面向對象高級編程

__slots__限制實例的屬性,如只允許對Student實例添加name和age屬性

classStudent(object):

? ? ?__slots__ = ('name','age')# 用tuple定義允許綁定的屬性名稱

日志:

使用logging模塊,程序打印完錯誤信息后會繼續(xù)執(zhí)行,并正常退出;

logging的好處,它允許你指定記錄信息的級別,有debug,info,warning,error等幾個級別

import logging

def foo(s):

? ? return 10/ int(s)

def bar(s):

? ? return foo(s) *2

def main():

? ? try:

? ? ? ? bar('0')

? ? except Exception as e:

? ? ? ? logging.exception(e)

單元測試:

編寫單元測試時,我們需要編寫一個測試類,從unittest.TestCase繼承。

以test開頭的方法就是測試方法,不以test開頭的方法不被認為是測試方法,測試的時候不會被執(zhí)行。

對每一類測試都需要編寫一個test_xxx()方法。由于unittest.TestCase提供了很多內(nèi)置的條件判斷,我們只需要調(diào)用這些方法就可以斷言輸出是否是我們所期望的。最常用的斷言就是assertEqual(),self.assertEqual(abs(-1),1), 拋出指定類型的斷言:

with self.assertRaises(KeyError):

? ? value = d['empty']

with self.assertRaises(AttributeError):

? ? value = d.empty

setUp()和tearDown()方法

文檔測試

import doctest?

doctest.testmod()

IO編程

with open("", 'rw') as f:

? ? print(f.read())

? ? f.write('Hello')

? ? f.close()

StringIO和BytesIO是在內(nèi)存中操作str和bytes的方法,使得和讀寫文件具有一致的接口。

>>> from io import StringIO

>>> f = StringIO()

>>> f.write('hello')

操作文件和目錄

import os

os.path.split()?把一個路徑拆分為兩部分,后一部分總是最后級別的目錄或文件名

os.path.splitext()可以直接讓你得到文件擴展名

os.path.join('/Users/michael','testdir') 在某個路徑下創(chuàng)建一個新的文件夾

os.listdir('./') 列出dir

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容