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 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
通过数据库向Django模型添加字段的示例
Jul 21 Python
win与linux系统中python requests 安装
Dec 04 Python
Python常见字典内建函数用法示例
May 14 Python
点球小游戏python脚本
May 22 Python
python 列表降维的实例讲解
Jun 28 Python
Django添加sitemap的方法示例
Aug 06 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
在python里协程使用同步锁Lock的实例
Feb 19 Python
浅谈python新式类和旧式类区别
Apr 26 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 11 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
一个好用的分页函数
2006/11/16 PHP
PHP 输出简单动态WAP页面
2009/06/09 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php实现的生成排列算法示例
2019/07/25 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
JavaScript 字符串乘法
2009/08/20 Javascript
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
DOM 高级编程
2015/05/06 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
python多线程用法实例详解
2015/01/15 Python
python函数形参用法实例分析
2015/08/04 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
Python如何将模块打包并发布
2020/08/30 Python
SQL面试题
2013/04/30 面试题
什么是抽象
2015/12/13 面试题
大学生未来职业生涯规划书
2014/02/15 职场文书
校庆口号
2014/06/20 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
关于倡议书的范文
2015/04/29 职场文书
运动会跳远广播稿
2015/08/19 职场文书
奖学金主要事迹范文
2015/11/04 职场文书