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__)








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值