1、ini 文件存储
class ConfigReader(): def __init__(self,file_ini = "{}/config.ini".format(FILE_INT_PATH)): self.file_ini= file_ini self.cf=configparser.RawConfigParser() #configparser.ConfigParser() 此方法不支持% self.cf.read(file_ini,encoding='utf-8-sig') #添加section def add_section(self,section,): self.cf.add_section(section) self.cf.write(open(self.file_ini, 'w+')) #添加某个值 ,不存在的section的无法存储,存在的key替换,不存在key创建 def set_value(self, section, key, value): self.cf.set(section, key, value) self.cf.write(open(self.file_ini, 'w+')) #获取section列表 def get_section(self): return self.cf.sections() #获取某个section的key列表 def get_key(self,section): return self.cf.options(section) #获取某个section的dict def get_section_dict(self, section): s = {} for k, v in self.cf.items(section): s[k] = v return s #获取某个值 def get_value(self,section,key): value = self.cf.get(section, key) return value def get_http(self, name): value = self.cf.get("HTTP", name) return value def get_db(self, name): value = self.cf.get("DB", name) return value def get_redis(self, name): value = self.cf.get("REDIS", name) return value def get_email(self, name): value = self.cf.get("EMAIL", name) return value
2、setattr动态添加类属性
class A(): name = 'python' def __init__(self): setattr(self.__class__, 'func_class', self.func) def func(self): return 'Hello world:func' @classmethod def funcmethod(cls): return 'Hello world:funcmethod' """ setattr(object, name, value) object为对象不是单纯的字符串 给object对象的name属性赋值,存在则修改,不存在则创建(可在下次直接使用) """ print('setattr==> name:{}'.format(getattr(A, 'name'))) setattr(A, 'name','shuzf') #修改变量值 setattr(A, 'age',30) #创建变量并赋值 print(getattr(A, 'name')) #返回已定义属性值 print(getattr(A, 'age')) #返回未定义属性 """ value为该对象方法时:获取name属性值,即获取方法;外部赋值方法为类静态方法,内部赋值不需要直接self.func """ setattr(A,'funcmethod_class',A.funcmethod) #创建变量并赋值方法 print(getattr(A,'func_class')()) #返回未定义属性值,内部赋值,值为方法 print(getattr(A,'funcmethod_class')()) #返回未定义属性值,外部赋值,值为方法