# -*- coding: utf-8 -*- # 写入数据的工具类 class FileManager(object): # 保存文件的名称 filename = 'student.txt' # 写一个写入数据的接口 @classmethod def write(cls, content, split='\n'): ''' :param content: 要写入的数据 :param split: 每条数据之间的分割符 :return: ''' # 判断传入的参数是否字符串类型,如果是,写入 如果不是抛出异常 if isinstance(content,str): # 1.打开文件 f = open(cls.filename, 'a') # 2.写入数据 f.write(content) f.write(split) # 3.关闭文件 f.close() else: raise TypeError('content must be a str!') # 写入多行数据 @classmethod def writelines(cls,str_list,split='\n'): # 判断某个对象是否是某个类型,如果是返回True,如果不是返回False rs = isinstance(str_list,list) # 如果为True if rs: # for循环遍历列表,取出每一数据,判断数据类型是否为字符串 for content in str_list: # 如果不是字符串类型 if isinstance(content,str) == False: # 抛出异常 raise TypeError('str_list must be a list of "str",ex:["str1","str2".....] ') # 如果没有抛出异常,就可以写入数据了 # 1.打开文件 f = open(cls.filename, 'a') # 2.写入数据 str1\nstr2\nstr3..... string = split.join(str_list) f.write(string) # 3.关闭文件 f.close() else: # 如果传入的不是列表,抛出异常 raise TypeError('str_list must be a list of "str",ex:["str1","str2".....] ') # 日期格式化工具类,用类执行一个函数,返回一个对象,对象分别有year\month\day ''' 2018-2-1 \ 2018.2.1 \ 2018 2 1 date.year = 2018 date.month = 2 date.day = 1 ''' class DateTool(object): # 初始化函数 def __init__(self, year=1970, month=1, day=1): self.year = year self.month = month self.day = day #类函数,传递进来一个日期,返回个该类的对象 @classmethod def get_date(cls, date): # 判断date是否为str类型 if not isinstance(date, str): # 不是str类型,直接触发异常 raise TypeError('date must be a str !') # 转换 # 判断是-还是.还是空格 if '-' in date: # list1 = date.split('-') # map() 让列表中每一个元素都去执行一次某个函数,返回一个结果列表 numbers = list(map(int, list1)) # year,month,day = [2018,2,1] 分别将2018赋值year 2赋值给month 1赋值给day year, month, day = numbers elif '.' in date: year, month, day = list(map(int, date.split('.'))) elif ' ' in date: year, month, day = list(map(int, date.split(' '))) # 创建对象 # obj = DateTool(year,month,day) obj = cls(year,month,day) # 返回对象 return obj # 只有在当前文件直接运行时,才会执行以下代码 if __name__ == '__main__': # 指定写入文件的名称 FileManager.filename = 'all_student.txt' # 执行写入功能函数 FileManager.write('hello') FileManager.write('world') FileManager.writelines(['hello', 'world', '你好', '张三']) # 开始进行日期转换 # 转换之后 返回一个结果对象 date = DateTool.get_date('2020-2-22') # date有三个属性,分别为 year month day print(date.year) print(date.month) print(date.day) *************** slots的用法class People(object): # 限制只有定义的这些属性才可以动态添加 # 以元组的方式定义能给对象添加的属性,除此之外的属性不能添加,对动态添加属性可以做出一些限制 __slots__ = ('name','age','phone') def __init__(self, weight): super(People, self).__init__() # self.weight = weight p1 = People(80) # 动态添加属性 # p1.name = '张三' # p1.sex = '男' # p1.age = 22
写入数据的工具类和日期格式化工具类
最新推荐文章于 2022-09-13 16:06:57 发布