Python根据字符串调用函数过程解析


Posted in Python onNovember 05, 2020

1.使用 getattr(object, name, default=None) 获取属性

# -*- encoding=utf-8 -*-
class Test:
  def __init__(self):
    self.name = '莉莉'
    self.age = 18
if __name__ == '__main__':
  test = Test()
  name = getattr(test, 'name') # 获取属性
  print(name)
  age = getattr(test, 'age') # 获取属性
  print(age)
  none = getattr(test, 'none', 'none') # 获取不存在的属性,需要添加 default,否则抛异常
  print(none)

运行

莉莉
18
none

2.使用 getattr(object, name, default=None) 获取方法

# -*- encoding=utf-8 -*-
class Test:
  def __init__(self):
    self.name = '莉莉'
    self.age = 18

  def get_name(self):
    print('年龄是:{}'.format(self.name))
    return self.name
if __name__ == '__main__':
  test = Test()
  get_name = getattr(test, 'get_name') # 获取方法
  print(get_name)
  get_name() # 调用方法

运行

<bound method Test.get_name of <__main__.Test object at 0x000000A6C234DF98>>

年龄是:莉莉

3.使用__dict__获取属性

# -*- encoding=utf-8 -*-
class Test:
  def __init__(self):
    self.name = '莉莉'
    self.age = 18
if __name__ == '__main__':
  test = Test()
  name = test.__dict__['name']
  print(name)

运行

莉莉

ps: 如果使用getattr()遇到类属性和方法名是相同时,默认取属性

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中max函数用于二维列表的实例
Apr 03 Python
pandas多级分组实现排序的方法
Apr 20 Python
Python将一个Excel拆分为多个Excel
Nov 07 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
python创建ArcGIS shape文件的实现
Dec 06 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
May 25 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 Python
django rest framework使用django-filter用法
Jul 15 Python
python中reload重载实例用法
Dec 15 Python
python 实现图片批量压缩的示例
Dec 18 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 #Python
Python利用matplotlib绘制折线图的新手教程
Nov 05 #Python
详解Django中异步任务之django-celery
Nov 05 #Python
Python Django路径配置实现过程解析
Nov 05 #Python
Python基于tkinter canvas实现图片裁剪功能
Nov 05 #Python
Python利用matplotlib绘制散点图的新手教程
Nov 05 #Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
Nov 05 #Python
You might like
PHP4引用文件语句的对比
2006/10/09 PHP
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
一些javascript一些题目的解析
2010/12/25 Javascript
jquery radio 操作代码
2011/03/16 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
2017/05/25 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python中的集合类型知识讲解
2015/08/19 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
实时获取Python的print输出流方法
2019/01/07 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
网络安全方面的面试题
2016/01/07 面试题
小车司机岗位职责
2013/11/25 职场文书
自我鉴定 电子商务专业
2014/01/30 职场文书
企业宗旨标语
2014/06/10 职场文书
新员工考核评语
2014/12/31 职场文书
护士自我推荐信范文
2015/03/24 职场文书
2015年助残日活动总结
2015/03/27 职场文书
PyTorch的Debug指南
2021/05/07 Python
python实战之用emoji表情生成文字
2021/05/08 Python
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
mysql查询结果实现多列拼接查询
2022/04/03 MySQL
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers