__slots__限制实例的属性,如只允许对Student实例添加name和age属性
classStudent(object):
__slots__ = ('name','age')# 用tuple定义允许绑定的属性名称
日志:
使用logging模块,程序打印完错误信息后会继续执行,并正常退出;
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开头的方法不被认为是测试方法,测试的时候不会被执行。
对每一类测试都需要编写一个test_xxx()方法。由于unittest.TestCase提供了很多内置的条件判断,我们只需要调用这些方法就可以断言输出是否是我们所期望的。最常用的断言就是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是在内存中操作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') 在某个路径下创建一个新的文件夹
os.listdir('./') 列出dir
网友评论