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绘制图表大全总结
Feb 11 Python
Python3操作SQL Server数据库(实例讲解)
Oct 21 Python
Python实现调度算法代码详解
Dec 01 Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 Python
ubuntu安装mysql pycharm sublime
Feb 20 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
python多线程同步之文件读写控制
Feb 25 Python
Python绘图实现显示中文
Dec 04 Python
python pptx复制指定页的ppt教程
Feb 14 Python
Python的logging模块基本用法
Dec 24 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 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
php数组中删除元素的实现代码
2012/06/22 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
2020/06/17 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
Python采集腾讯新闻实例
2014/07/10 Python
python的变量与赋值详细分析
2017/11/08 Python
Python 实现向word(docx)中输出
2020/02/13 Python
python如何运行js语句
2020/09/09 Python
如何用python 操作zookeeper
2020/12/28 Python
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
介绍一下游标
2012/01/10 面试题
提高EJB性能都有哪些技巧
2012/03/25 面试题
怎样写演讲稿
2014/01/04 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
goland设置颜色和字体的操作
2021/05/05 Golang