您的位置:首页 > 编程语言 > Python开发

浅谈Python反射 & 单例模式

2019-04-23 18:02 501 查看

反射

什么是反射?

  - 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)

  面向对象中的反射

  - 通过字符串的形式来操作(获取、检查、增加、删除)对象中的成员

  - python中的一切事物都是对象(都可以使用反射)

  四个可以实现自省的函数:

  - getattr()   获取属性

  - hasattr()  判断对象中是或否拥有特定的值

  - setattr()   设置属性

  - delattr(obj,'gender')  删除属性

class Info:

def __init__(self,name,age,gender):
self.name = name
self.age = age
self.gender = gender
def show(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对象已被删除

操作类对象:

class Info(object):
staticField = "Hello World!"

def __init__(self):
self.name = 'mike'

def func(self):
return 'func'

@staticmethod
def bar():
return 'bar'

print(getattr(Info, 'staticField'))
print(getattr(Info, 'func'))  # 返回函数的内存地址
print(getattr(Info, 'bar'))  # 返回函数的内存地址

单例模式

什么是单例模式?

  - 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。

  - 当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。

  - 单例,永远使用同一份实例(对象)。单例模式能够有效地节约内存资源。

  实现单例模式:

class Info:
__v = None

@classmethod
def get_instance(cls):
if cls.__v:
return cls.__v
else:
cls.__v = Info()
return cls.__v

obj1 = Info.get_instance()
print(obj1)
obj2 = Info.get_instance()
print(obj2)

以上所述是小编给大家介绍的Python反射 & 单例模式详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: