浅谈Python反射 & 单例模式
反射
什么是反射?
-反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)
面向对象中的反射
-通过字符串的形式来操作(获取、检查、增加、删除)对象中的成员
-python中的一切事物都是对象(都可以使用反射)
四个可以实现自省的函数:
-getattr() 获取属性
-hasattr() 判断对象中是或否拥有特定的值
-setattr() 设置属性
-delattr(obj,'gender') 删除属性
classInfo: def__init__(self,name,age,gender): self.name=name self.age=age self.gender=gender defshow(self): return'%s-%s'%(self.name,self.age) obj=Info('alex','20','男') b='name' print(obj.__dict__[b]) print(obj.__dict__['name']) #getattr() inp=input('请输入想要获取的内容:') v=getattr(obj,inp) print(v) func=getattr(obj,'show') v=func() print(v) #hasattr() print(hasattr(obj,'name')) #setattr() setattr(obj,'k1','v1') #delattr(obj,'gender') obj.gender#此时报错,Info类中的gender对象已被删除
操作类对象:
classInfo(object): staticField="HelloWorld!" def__init__(self): self.name='mike' deffunc(self): return'func' @staticmethod defbar(): return'bar' print(getattr(Info,'staticField')) print(getattr(Info,'func'))#返回函数的内存地址 print(getattr(Info,'bar'))#返回函数的内存地址
单例模式
什么是单例模式?
-单例模式(SingletonPattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。
-当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。
-单例,永远使用同一份实例(对象)。单例模式能够有效地节约内存资源。
实现单例模式:
classInfo: __v=None @classmethod defget_instance(cls): ifcls.__v: returncls.__v else: cls.__v=Info() returncls.__v obj1=Info.get_instance() print(obj1) obj2=Info.get_instance() print(obj2)
以上所述是小编给大家介绍的Python反射&单例模式详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!