Python反射操作对象属性方法详解
前言:
众所周知,每一个实例化对象都是有实例化属性或者方法的,之前我们对实例化对象进行属性方法查询、删除或者添加都是直接去通过对象名.属性 去操作的
所以今天我来讲其他方法去操作实例化对象的属性方法,看正文:
反射
在Python面对对象中,通过字符串的形式去操作对象的属性方法就称之为反射(在Python中一切事物都是可以为对象)
对象反射这里提供了以下几个内置字符串函数:
- getattr 获取指定对象的属性以及方法
- setattr 设置对象属性
- hasattr 判断对象是否有这个属性以及方法
- delattr 删除对象属性
下面进行一一细讲
1.getattr() 函数
格式:
变量名 = getattr(对象, 对象属性, 默认值)
作用:
获取指定对象的属性以及方法,然后返回这个属性或者方法
示例:
class A(object):
def __init__(self,name):
self.name=name
def fun(self):
print(f'我是{self.name}')
user=A('Jack')
print(user.name) #输出 Jack
b=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=name
def 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=name
def fun(self):
print(f'我是{self.name}')
user=A('Jack')
print(hasattr(user,'age')) #False
print(hasattr(user,'name')) #True
print(hasattr(user,'fun')) #True4.delattr() 函数
格式:
delattr(对象, 对象属性)
作用:
删除对象属性或者方法
示例:
class A(object):
def __init__(self,name,age):
self.name=name
self.age=age
def 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一切皆对象,所以一个模块,一个函数都是可以去使用的,这里就不多说了。
到此这篇关于Python反射操作对象属性方法详解的文章就介绍到这了,更多相关Python反射操作对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python3解析库BeautifulSoup4的安装配置与基本用法
简单来说,BeautifulSoup就是Python的一个HTML或XML的解析库,我们可以用它来方便地从网页中提取数据,下面这篇文章主要给大家介绍了关于python3解析库BeautifulSoup4的安装配置与基本用法的相关资料,需要的朋友可以参考下2018-06-06
python导出requirements.txt的几种方法总结
这篇文章主要介绍了python导出requirements.txt的几种方法总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-02-02
Pandas实现(pivot_table函数)数据透视表方式
pandas的pivot_table()函数非常强大,主要用于创建数据透视表,重要参数包括index、values、columns和aggfunc,index用于设置行索引,类似于SQL中的group by,values用于进行聚合计算的数据选择,columns参数可设置列层次,非必须2024-09-09
python中@property和property函数常见使用方法示例
这篇文章主要介绍了python中@property和property函数常见使用方法,结合实例形式分析了Python @property和property函数功能、使用方法及相关操作注意事项,需要的朋友可以参考下2019-10-10


最新评论