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查找目录下指定扩展名的文件实例
Apr 01 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 Python
python如何统计代码运行的时长
Jul 24 Python
python批量处理文件或文件夹
Jul 28 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
Aug 07 Python
Python何绘制带有背景色块的折线图
Apr 23 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
PHP的面向对象编程
2006/10/09 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
Python 忽略文件名编码的方法
2020/08/01 Python
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
中间件分为哪几类
2012/03/14 面试题
优秀英语专业毕业生求职信
2013/11/23 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
自荐信格式模板
2015/03/27 职场文书
党支部工作总结2015
2015/04/01 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle