类之反射

博客主要介绍了Python中对对象成员的操作,包括getattr、hasattr、setattr、delattr。同时指出类和模块也属于对象,可从类里获取成员,从模块里获取内容。

1.getattr/hasattr/setattr/delattr操作对象中的成员

1 class Foo:
2     def __init__(self,name,age):
3         self.name = name
4         self.age = age
5     def show(self):
6         return '%s-%s' %(self.name,self.age)
7 obj = Foo('alex',18)

(1)getattr

1 s = getattr(obj,'name')    #用getattr以字符串方式从obj对象里获取字段成员
2 print(s)
3 
4 func = getattr(obj,'show')  #用getattr以字符串方式从obj对象里获取方法成员
5 print(func)
6 r = func()      #执行获取到的方法
7 print(r)

(2)hasattr

t = hasattr(obj,'name')    #hasattr判断对象里是否有指定成员
print(t)

(3)setattr

setattr(obj,'gender','men')   #setattr设置对象成员
print(obj.gender)

(4)delattr

delattr(obj,'name')   #delattr删除对象成员

 

2.从类里拿成员--类也是对象

1 class Foo:
2     stat = '887'
3     def __init__(self,name,age):
4         self.name = name
5         self.age = age
6 g = getattr(Foo,'stat')
7 print(g)

3.从模块里拿东西--模块也是一个对象

1 import test
2 t = getattr(test,'name')  #从模块里拿到一个变量
3 print(t)
4 cls = getattr(test,'Foo')  #从模块里拿到一个类
5 print(cls)
6 obj = cls()
7 print(obj.name)

 

转载于:https://www.cnblogs.com/Finance-IT-gao/p/10547253.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值