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中使用成员运算符的示例
May 13 Python
python requests 使用快速入门
Aug 31 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
Python爬虫实现验证码登录代码实例
May 10 Python
Python面向对象进阶学习
May 21 Python
使用python实现简单五子棋游戏
Jun 18 Python
python简单鼠标自动点击某区域的实例
Jun 25 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
Feb 09 Python
Python sqlite3查询操作过程解析
Feb 20 Python
Python实现发票自动校核微信机器人的方法
May 22 Python
python3中apply函数和lambda函数的使用详解
Feb 28 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
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
node.js实现BigPipe详解
2014/12/05 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
JQuery页面地址处理插件jqURL详解
2015/05/03 Javascript
基于javascript实现图片懒加载
2016/01/05 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
简单实现python聊天程序
2018/04/01 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
优秀的导游求职信范文
2014/04/06 职场文书
小学生寒假家长评语
2014/04/16 职场文书
物理学专业求职信
2014/07/04 职场文书
机电一体化专业求职信
2014/07/22 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
Python实现生成bmp图像的方法
2021/06/13 Python