Python面向对象——反射

1.什么是反射  

反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检修和修改它本身状态或行为的一种能力(自省)。这一概念的提出很快引发了计算科学领域关于应用反射性的研究。它率先被程序语言的设计领域所采用。

2.Python中面向对象中的反射:通过字符串的形式操作对象相关的属性,python中的一切皆对象(都可以使用反射)

3.可以实现自省的四个函数

举个例子:

class People:
    country="China"
    def __init__(self,name):
        self.name=name
    def tell(self):
        print('%s is good' %self.name)

obj=People('OMG')

'''
1、hasattr(object,name)
判断object中没有一个name字符串对应的方法和属性
'''
print(hasattr(People,'country'))
print('country' in People.__dict__)

print(hasattr(obj,'name'))
print(hasattr(obj,'country'))
print(hasattr(obj,'tell'))

'''
2、getattr(object,name,default=None)
'''
x=getattr(People,'country1',None)
print(x)

f=getattr(obj,'tell',None)#obj.tell
print(f == obj.tell)
f()
obj.tell()


'''
3、setattr(x,y,v)
'''
People.x=111
setattr(People,'x',111)
print(People.x)

obj.age=18
setattr(obj,"age",18)
print(obj.__dict__)

'''
4、delattr(x,y)
'''
del People.country
delattr(People,"country")
print(People.__dict__)

del obj.name
delattr(obj,"name")
print(obj.__dict__)








阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭