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获取apk文件URL地址实例
Nov 01 Python
python结合opencv实现人脸检测与跟踪
Jun 08 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
Python实现矩阵转置的方法分析
Nov 24 Python
python psutil库安装教程
Mar 19 Python
python后端接收前端回传的文件方法
Jan 02 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
Oct 01 Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 Python
pandas apply多线程实现代码
Aug 17 Python
手把手教你使用TensorFlow2实现RNN
Jul 15 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
smarty的保留变量问题
2008/10/23 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
php5与php7的区别点总结
2019/10/11 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
js验证表单大全
2006/11/25 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
使用Python3制作TCP端口扫描器
2017/04/17 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
Python3.6简单反射操作示例
2018/06/14 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
校园歌手大赛策划书
2014/01/17 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书