首页 > 编程语言 >Python 内置函数getattr()

Python 内置函数getattr()

时间:2022-08-15 00:44:43浏览次数:47  
标签:内置 get Python self url getattr post method def

优点

  • 可消除if...else

 

Python 面向对象中的反射

  • 通过字符串的形式操作对象的属性,true or false
  • Python 中一切皆为对象,所以只要是对象都可以使用反射
  • 比如:实例对象、类对象、本模块、其他模块,因为他们都能通过 对a.属性 的方式获取、调用

 

hasattr
def hasattr(*args, **kwargs): 
    pass
  • 返回对象是否具有具有给定名称的属性

 

getattr
def getattr(object, name, default=None): 
    pass
  • 获取对象指定名称的属性
  • 当属性不存在,则返回 default 值,如果没有指定 default 就会抛出异常

 

未使用反射前

class BaseRequest:
    req = requests.Session()

    def get(self, url):
        resp = self.req.get(url)
        print("==get==")
        return resp

    def post(self, url):
        resp = self.req.post(url)
        print("==post==")
        return resp

    def put(self, url):
        resp = self.req.put(url)
        print("==put==")
        return resp

    # 不使用反射的方法
    def main(self, method, url):
        if method == "get":
            self.get(url)
        elif method == "post":
            self.post(url)
        elif method == "put":
            self.put(url)

 

使用反射后

    # 使用反射的方法
    def main_attr(self, method, url):
        if hasattr(self, method):
            func = getattr(self, method)
            func(url)

 

实际运用

# 原始 
def get(self, url, **kwargs):
    '''
    定义get方法
    '''
    response = requests.get(self.host + url, **kwargs, timeout=self.timeout, verify=False)
    return response

def post(self, url, **kwargs):
    '''
    定义post方法
    '''
    response = requests.post(self.host + url, **kwargs, timeout=self.timeout, verify=False)
    return response

# 优化
def main_http(self, method, url, **kwargs):
    # 判断对象是否有对应的方法
    if hasattr(self, method):
        # 获取对应的方法
        func = getattr(self, method)
        # 执行方法,且获取返回值
        res = func(url, **kwargs)
        return res

标签:内置,get,Python,self,url,getattr,post,method,def
From: https://www.cnblogs.com/QingshanY/p/16586822.html

相关文章

  • python学习Day44
    Day44今日内容概要数据存取演变史数据库软件应用史数据库的本质数据库的分类(理论重点)MySQL数据库简介基本使用系统服务制作密码相关操作SQL与NoSQL数据库语......
  • Python: __fspath__
                 ......
  • pip安装报错:Command python setup.py egg_info failed with error code 1
    原文链接windows下使用pip安装torch模块,出现错误:ERROR:Command"pythonsetup.pyegg_info"failedwitherrorcode1inC:\Users\xxx\AppData\Local\Temp\pip-insta......
  • python3 运维脚本(使用psutil模块)(转)
    使用python编写一个监控脚本,放在Linux系统运行。监控的要求如下:1.显示当前时间2.脚本运行之后监控10s,每隔一秒钟输出一次信息3.显示当前系统CPU的逻辑核数、平均使用率4.显......
  • python遍历文件夹中所有的文件
    遍历所有文件和文件夹参考:https://blog.csdn.net/caroline_wendy/article/details/120296249获取视频文件时长参考:https://blog.csdn.net/lilongsy/article/details/121......
  • 周回顾并发编程与数据库08.14:UDP协议、操作系统发展史、相关名词、进程、线程、验证py
    目录UDP协议操作系统发展史相关名词进程线程锁信号量event事件池协程数据库MySQLSQL与NoSQL内容UDP协议Internet协议集支持一个无连接的传输协议,该协议......
  • python九周周末总结
    python九周周末总结UDP协议udp协议的交互模式服务端不需要考虑客户端是否退出,你发多少那么他就会按照你发的东西直接去传输给客户端不存在黏包现象服务端:importsocket......
  • python 中字符串 内置函数 find
     001、>>>str1="xabdxyabxykk"##测试字符串>>>str1'xabdxyabxykk'>>>str1.find("ab")##返回测试字符串中首次匹配ab的首字符的索......
  • python 解析from-data数据
    最近在自己尝试使用python基于wsgiref写小型后端框架时需要从前端上传文件到后台,那么要在前端表单中需要添加enctype="multipart/form-data"这样后台拿到的数据不能使用......
  • python 中实现 把short.fa中的序列比对到ref.fa
     文章来源:https://www.jianshu.com/p/2475c3240a67 简化的短序列匹配程序(map.py)把short.fa中的序列比对到ref.fa,输出短序列匹配到ref.fa文件中哪些序列的哪些位......