Python进阶-----面向对象8.0(反射---对象属性方法操作)
创始人
2024-05-30 18:06:05
0

目录

前言:

反射

1.getattr() 函数

2.setattr() 函数

3.hasattr() 函数

4.delattr() 函数


前言:

        众所周知,每一个实例化对象都是有实例化属性或者方法的,之前我们对实例化对象进行属性方法查询、删除或者添加都是直接去通过对象名.属性 去操作的,所以今天我来讲其他方法去操作实例化对象的属性方法,看正文:

反射

在Python面对对象中,通过字符串的形式去操作对象的属性方法就称之为反射(在Python中一切事物都是可以为对象)

对象反射这里提供了以下几个内置字符串函数:

  • getattr 获取指定对象的属性以及方法

  • setattr 设置对象属性

  • hasattr 判断对象是否有这个属性以及方法

  • delattr 删除对象属性

下面进行一一细讲

1.getattr() 函数

 格式:

变量名 = getattr(对象, 对象属性, 默认值)

作用:

获取指定对象的属性以及方法,然后返回这个属性或者方法

示例:

class A(object):def __init__(self,name):self.name=namedef fun(self):print(f'我是{self.name}')
user=A('Jack')
print(user.name) #输出 Jackb=getattr(user,'name')
a=getattr(user,'age',18) #注意注意!!!
print(user.age)#报错的
c=getattr(user,'fun')
print(b,a)
c()
print(user.__dict__)
#输出结果:
# Jack 18
# 我是Jack
# {'name': 'Jack'}

注意看,这里我a=getattr(user,'age',18),其中age不是这个实例化对象的属性,只是我通过这个函数把18这个数字赋值给了c,实际上user和age并没有参与这个赋值,因为user与age一定关系都没有。下面通过__dict__就很明显看出来

2.setattr() 函数

格式:

setattr(对象, "对象属性", 值)

作用:

添加设置对象属性

示例:

#给对象添加属性
class A(object):def __init__(self,name):self.name=namedef fun(self):print(f'我是{self.name}')
user=A('Jack')
#之前的做法:直接添加
user.age=18
print(user.age)
#通过字符串操作
setattr(user,'num','137***55***')
print(user.name,user.num)
print(user.__dict__)
#输出结果:
# 18
# Jack 137***55***
# {'name': 'Jack', 'age': 18, 'num': '137***55***'}

3.hasattr() 函数

格式:

变量 = hasattr(对象, "对象属性")

作用:

判断对象是否有这个属性以及方法 ,返回布尔类型

示例:

class A(object):def __init__(self,name):self.name=namedef fun(self):print(f'我是{self.name}')
user=A('Jack')
print(hasattr(user,'age')) #False
print(hasattr(user,'name')) #True
print(hasattr(user,'fun')) #True

4.delattr() 函数

格式:

delattr(对象, 对象属性)  

作用:

删除对象属性或者方法

示例:

class A(object):def __init__(self,name,age):self.name=nameself.age=agedef fun(self):print(f'我是{self.name}')
user=A('Jack',18)#{'name': 'Jack', 'age': 18}
print(user.__dict__)
delattr(user,'age') 
#等效于 del user.age
print(user.__dict__)#{'name': 'Jack'}

可以看出,实例化对象user中的age属性被删除了

 

当然,这四个函数不单单可以在实例化对象使用,Python一切皆对象,所以一个模块,一个函数都是可以去使用的,这里就不多说了。

        好了,这一期就到这里了,我们下一期再见!

分享一张壁纸:
 

相关内容

热门资讯

读什么什么有感的英文 读什么什么有感的英文英语读后感标题 “读XXX有感”用英语说是 “Reading after XX...
秦岚个人资料身高体重 秦岚个人资料身高体重身高:165公分 体重:46公斤秦岚 生日:七月十七日 星座:巨蟹座 出生地:沈...
双鱼和天秤会纠缠一辈子,既相配... 双鱼和天秤会纠缠一辈子,既相配又相克,为什么?双鱼座的人和天秤座的人都是比较细心的,而且特别敏感,有...
独自一人在外怎样和别人相处? 独自一人在外怎样和别人相处?我觉得独自一个人在外面一定要好好的照顾自己,应该找一份工作,找一个住的地...
朱自清散文集有哪些写的好,值得... 朱自清散文集有哪些写的好,值得背诵的?《背影》、《 春》、《 荷塘月色》、《 匆匆》都是不错的佳...
大家最讨厌的电视剧的哪一个主角... 大家最讨厌的电视剧的哪一个主角?我觉得最讨厌的电视剧主角是容嬷嬷。都挺好,里面的苏大强就是越看越别扭...
69DT伤害怎么才能上1300... 69DT伤害怎么才能上1300 !我加点是4L1M!现在60了!伤害才800!我没大号,想买梦幻币买...
孩子上课不认真听讲 孩子上课不认真听讲我的孩子七周半,已经上二年级了,但是上课不认真听讲总是搞小动作,说了很多次也不听,...
《红脸儿》的主要内容 《红脸儿》的主要内容  红脸儿主要内容:   小说以散淡而富有诗意的语言回顾了“我”与3个小伙伴之间...
异地恋的成功例子 异地恋的成功例子 情侣异地恋8年终成正果 两人存下186张火车票见证爱情一对河南的情侣在大学恋爱时便...
小狗吃了死耗子怎么办 小狗吃了死耗子怎么办你好,没事的,放心吧,你的小狗是宠物狗还是土狗,若是宠物狗的话可能会给它造成身体...
请问有没有死亡万花筒广播剧资源... 请问有没有死亡万花筒广播剧资源?死亡万花筒,我有呀!死亡万花筒广播剧,地·址:9525.video(...
徐缺有哪些女人 徐缺有哪些女人徐缺是小说《最强反套路系统》中的角色,他有许多女性关系,其中包括:1. 林小红:徐缺的...
假如我是四大名著中的人物作文9... 假如我是四大名著中的人物作文900假如你是的林黛玉的话那你就会好好读书,不至于连900个字都写不出了...
西游记81难? 西游记81难?西游记的81难是师徒四人取经回来在河中落水经书被淹了的事
魔兽世界风暴王子问题! 魔兽世界风暴王子问题!现在3.05这版本 王子第4阶段的屏障 是不是可以被MS驱散? 屏障驱散后是...
如何评价张杰的少年中国说 如何评价张杰的少年中国说我觉得非常棒,张杰的家庭条件不好。从小就非常努力。刻苦学习音乐,经过拼搏奋斗...
智取生辰纲中杨志是怎样的人?他... 智取生辰纲中杨志是怎样的人?他失败的原因是什么?简短些志有智慧,但是他忽略了一个重要的因素:团队的合...
有一本书,名字忘记了.好象是美... 有一本书,名字忘记了.好象是美国人写的.梭罗《瓦尔登湖》 如果你用的是新教材,应该是这篇吧是 海明威...
四岁孩子看什么书 四岁孩子看什么书可以看一些带有简单数字的书、色彩鲜艳的图画、动物图画等,培养他的数字感和色彩感,尽量...