Python反射操作对象属性方法详解

 更新时间:2023年08月08日 10:09:02   作者:灰勒塔德  
这篇文章主要介绍了Python反射操作对象属性方法详解,在Python面对对象中,通过字符串的形式去操作对象的属性方法就称之为反射(在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')) #True

4.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反射操作对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用pyinstaller打包.exe文件的详细教程

    使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下
    2022-04-04
  • Python搭建代理IP池实现检测IP的方法

    Python搭建代理IP池实现检测IP的方法

    这篇文章主要介绍了Python搭建代理IP池实现检测IP的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 如何一键理清大型Python项目依赖树

    如何一键理清大型Python项目依赖树

    这篇文章主要介绍了如何一键理清大型Python项目依赖树,文章围绕主题相关资料展开详细的内容介绍,感兴趣的小伙伴可以参考一下
    2022-06-06
  • windows下安装Python的XlsxWriter模块方法

    windows下安装Python的XlsxWriter模块方法

    今天小编就为大家分享一篇windows下安装Python的XlsxWriter模块方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 使用Python生成跑马灯视频的完整代码

    使用Python生成跑马灯视频的完整代码

    这篇文章主要介绍了如何使用Python生成跑马灯视频,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-11-11
  • Django 外键查询的实现

    Django 外键查询的实现

    今天学习了一下外键查询的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • Python读取英文文件并记录每个单词出现次数后降序输出示例

    Python读取英文文件并记录每个单词出现次数后降序输出示例

    这篇文章主要介绍了Python读取英文文件并记录每个单词出现次数后降序输出,涉及Python文件读取、字符串替换、分割以及字典遍历、排序等相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • python基础之函数的返回值

    python基础之函数的返回值

    这篇文章主要介绍了Python函数返回值,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下
    2021-10-10
  • Python实现程序的单一实例用法分析

    Python实现程序的单一实例用法分析

    这篇文章主要介绍了Python实现程序的单一实例用法,较为详细的分析了Python窗口的相关操作技巧,需要的朋友可以参考下
    2015-06-06
  • 基于Python+Flask实现一个简易网页验证码登录系统案例

    基于Python+Flask实现一个简易网页验证码登录系统案例

    当今的互联网世界中,为了防止恶意访问,许多网站在登录和注册表单中都采用了验证码技术,验证码可以防止机器人自动提交表单,确保提交行为背后有一个真实的人类用户,本文将向您展示如何使用Python的Flask框架来创建一个简单的验证码登录系统
    2023-09-09

最新评论