首页 > 编程语言 >python getattr 反射的使用

python getattr 反射的使用

时间:2023-02-28 10:25:30浏览次数:43  
标签:反射 调用 name python getattr print click 属性

前言

反射的本质是通过字符串去调用某对对象的方法/属性,或者调用模块中的函数等。
python中提供了四个重要的方法

  • getattr获取对象属性/对象方法
  • hasattr判断对象是否有对应的属性及方法
  • delattr删除指定的属性
  • setattr为对象设置内容

getattr获取对象属性/方法

如下下了一个类,里面有属性和方法,我们正常调用是先实例化再调用对象和方法。

class Page:

    name = "hello"
    des = "hello world"
    btn = "btn"

    def click(self):
        print("click button")

    def clear(self):
        print("clear")

    def fill(self, text):
        print(f"input text: {text}")


if __name__ == '__main__':
    p = Page()
    print(p.name)
    print(p.click())

当我们想批量操作的时候,比如只需要知道关键字"click","clear","fill" 就可以调用对应的方法了

    p = Page()
    # 获取对象属性
    name = getattr(p, "name")
    print(name)
    # 调用对象方法
    getattr(p, "click")()
    # 方法带参数
    getattr(p, "fill")("yo yo")

其它操作

我们在调用之前事先不知道有对应方法,所以先判断后调用。
hasattr判断对象是否有对应的属性及方法

   p = Page()
    # 先判断后调用
    if hasattr(p, "click"):
        getattr(p, "click")()

delattr 删除指定的属性

delattr(p, "click")
    print(p.click)

setattr 为对象设置内容, 可以动态添加属性和方法

 setattr(p, 'age', 22)
 print(getattr(p, 'age'))

标签:反射,调用,name,python,getattr,print,click,属性
From: https://www.cnblogs.com/yoyoketang/p/17162991.html

相关文章

  • python 如何实现多线程
    今天本来打算学习学习多进程的,但是由于我现在的电脑没有Linux系统,无法通过Linux系统编辑一些多进程的程序,因此我打算从多线程入手。多线程我们的程序一般都是多任务的,如......
  • 跟女朋友介绍十个常用的 Python 内置函数,她夸了我一整天
    内置函数是什么了解内置函数之前,先来了解一下什么是函数 将使用频繁的代码段进行封装,并给它起一个名字,当我们使用的时候只需要知道名字就行函数就是一段封装好的、可......
  • python基于评论情感分析和回归、arima销量预测的购物网站选品
    全文链接:http://tecdat.cn/?p=31678原文出处:拓端数据部落公众号分析师:RuBai网络购物模式已成为越来越重要的产品销售模式,亚马逊网站早在1995年就开始邀请产品消费者发......
  • python文件路径
    importos#获取绝对路径#os.path.abspath("__file__")获取当前文件的绝对路径#os.path.dirname(os.path.abspath("__file__"))获取当前文件目录path=os.path.......
  • Python多版本管理pyenv
    1背景&概述因某些需求,需要安装TensorFlow,很自然地在终端敲下了以下命令:pipinstalltensorflow1然后。。。好家伙???居然没有??因为是Python3.9,去pypi搜索了,居然......
  • Python 异步: 保护任务免于取消(13)
    Asyncio任务可以通过调用它们的cancel()方法来取消。我们可以通过将任务包装在对asyncio.shield()的调用中来保护任务不被取消。让我们仔细看看。1.什么是Asyncio......
  • Python 类内、类间 函数的调用
    类内函数的调用classA(): defdouble(self,x): returnx*2 deftriple(self,y): returny*3 defsum(self,x,y): returnself.double(x)+self.triple(y)if......
  • python / lib
    spython正则表达式:repython操作系统库:ospython爬虫库:request库C:\Users\lindows>pipinstallrequests-ihttps://mirrors.aliyun.com/pypi/simpleLookinginindex......
  • Python中logging模块用法
    一、低配logging日志总共分为以下五个级别,这个五个级别自下而上进行匹配debug-->info-->warning-->error-->critical,默认最低级别为warning级别。1.v1importlogging......
  • python爬虫-request模块
    1.requests中的请求方法  HTTP请求方法:requests.get(url,params=None,**kwargs)#GET请求requests.post(url,data=None,json=None,**kwa......