Python根据字符串调用函数过程解析
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 字符串格式化的示例
一.旧式的字符串格式化 % 操作符 参考以下示例: >>> name = "Eric" >>> "Hello, %s." % name 'Hello, Eric.' 当有多个变量需要插入到字符串中时: >>> name = "Eric" >>> age = 74 >>> "Hello, %s. You are %s." % (name,
-
浅析Python中字符串的intern机制
intern机制: 字符串类型作为Python中最常用的数据类型之一,Python解释器为了提高字符串使用的效率和使用性能,做了很多优化,例如:Python解释器中使用了 intern(字符串驻留)的技术来提高字符串效率,什么是intern机制?即值同样的字符串对象仅仅会保存一份,放在一个字符串储蓄池中,是共用的,当然,肯定不能改变,这也决定了字符串必须是不可变对象. 简单原理: 实现 Intern 机制的方式非常简单,就是通过维护一个字符串储蓄池,这个池子是一个字典结构,如果字符串已经存在于池
-
Python字符串三种格式化输出
字符串格式化输出是python非常重要的基础语法,今天就把三种格式化输出做一个简单的总结,希望对大家有帮助. 格式化输出:内容按照一定格式要求进行输出. 1.使用占位符%输出 python2.6版本之前,使用%格式化字符串沿用的是C语言的输出格式. 使用说明: print("格式化字符串" % 变量) #变量超过2个使用元组格式: print("格式化字符串" % (变量1,变量2)) 使用%占位符表示字符串中变量位置. 传入的值要与%占位符的变量一一对应. 其中,
-
python 通过字符串调用对象属性或方法的实例讲解
有时候需要将属性或方法作为参数传入,这个时候可以通过以下几种方式用字符串调用对象属性或方法 1.eval In [634]: def getmethod(x,char='just for test'): ...: return eval('str.%s' % x)(char) ...: In [635]: getmethod('upper') Out[635]: 'JUST FOR TEST' 2.getattr In [650]: def getmethod2(x, char='just fo
-
Python中用字符串调用函数或方法示例代码
前言 本文主要给大家介绍了关于Python用字符串调用函数或方法的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 先看一个例子: >>> def foo(): print "foo" >>> def bar(): print "bar" >>> func_list = ["foo","bar"] >>> for func in func_li
-
python把一个字符串切开的实例方法
split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串,并返回分割后的字符串列表. 语法: str.split(str="", num=string.count(str)) 参数: str -- 分隔符,默认为所有的空字符,包括空格.换行(\n).制表符(\t)等. num -- 分割次数.默认为 -1, 即分隔所有. 代码示例: #定义一个字符串str1 >>> str1 = "3w.gorly.test
-
python判断字符串以什么结尾的实例方法
函数:endswith() 作用:判断字符串是否以指定字符或子字符串结尾,常用于判断文件类型. 相关函数:判断字符串开头 startswith() 函数说明: 语法: string.endswith(str, beg=[0,end=len(string)]) string[beg:end].endswith(str) 参数说明: string: 被检测的字符串 str: 指定的字符或者子字符串(可以使用元组,会逐一匹配) beg: 设置字符串检测的起始位置(可选,从左数起) en
-
python中根据字符串调用函数的实现方法
在python中可以根据字符串来调用函数: 1.使用getattr从字符串来调用函数 在多进程中,可能传递过来的是一个字符串,那么我怎么来调用一个已经存在的函数呢,主要就是使用到getattr函数的作用,这个函数就是在使用字符串得到这个字符串对应的函数的对象,然后就可以进行执行,如下所示: 在模块中,存在两个函数: [root@python 530]# cat attr.py #!/usr/bin/env python def kel(): print 'this is a kel functi
-
Python根据字符串调用函数过程解析
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')
-
python使用rsa非对称加密过程解析
这篇文章主要介绍了python使用rsa非对称加密过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.安装rsa 支持python 2.7 或者 python 3.5 以上版本 使用豆瓣pypi源来安装rsa pip install -i https://pypi.douban.com/simple rsa 2.加密解密 2.1.生成公私钥对 import rsa # 1.接收者(A)生成512位公私钥对 # a. lemon_pub为
-
Python测试线程应用程序过程解析
这篇文章主要介绍了Python测试线程应用程序过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在本章中,我们将学习线程应用程序的测试.我们还将了解测试的重要性. 为什么要测试? 在我们深入讨论测试的重要性之前,我们需要知道测试的内容.一般来说,测试是一种了解某些东西是如何运作的技术.另一方面,特别是如果我们谈论计算机程序或软件,那么测试就是访问软件程序功能的技术. 在本节中,我们将讨论软件测试的重要性.在软件开发中,必须在向客户端发布软
-
Python Decorator的设计模式演绎过程解析
目录 关于代理模式.装饰模式 Python中的代理/装饰 还有什么不理想的地方呢? 补充 关于代理模式.装饰模式 设计模式中经常提到的代理模式.装饰模式,这两种叫法实际上是说的同一件事,只是侧重点有所不同而已. 这两者都是通过在原有对象的基础上封装一层对象,通过调用封装后的对象而不是原来的对象来实现代理/装饰的目的. 例如:(以Java为例) public class CountProxy implements Count { private CountImpl countImpl; publi
-
python re模块findall()函数实例解析
本文研究的是re模块findall()函数的相关内容,首先看看实例代码: >>> import re >>> s = "adfad asdfasdf asdfas asdfawef asd adsfas " >>> reObj1 = re.compile('((\w+)\s+\w+)') >>> reObj1.findall(s) [('adfad asdfasdf', 'adfad'), ('asdfas asd
-
python打包成so文件过程解析
这篇文章主要介绍了python打包成so文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 wget https://bootstrap.pypa.io/get-pip.py python get-pip.py pip install cython 编写setput.py文件: setup.py文件内容如下: from distutils.core import setup from distutils.extension import
-
python全局变量引用与修改过程解析
这篇文章主要介绍了python全局变量引用与修改过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.引用 使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字.如: #! /usr/bin/python a = 1 b = [2, 3] def func(): if a == 1: print("a: %d" %a) for i in range(4): if i in b: print(&quo
-
Python namedtuple命名元组实现过程解析
这篇文章主要介绍了Python namedtuple命名元组实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 命名元组(namedtuple)是一种带有属性的元组,它们是组合只读数据的很好的方式. 相比一般的元组,构造命名元组需要先导入namedtuple,因为它不在默认的命名空间里.然后通过名字和属性来定义一个命名元组.这会返回一个像类一样的对象,可以进行多次实例化. 命名元组可以被打包.解包以及做所有可以对普通元组做的事,并且还可
随机推荐
- PHP中isset与array_key_exists的区别实例分析
- 轻松搞定iOS本地消息推送
- iOS App开发中的UIStackView堆叠视图使用教程
- java中获取类加载路径和项目根路径的5种方式分析
- 浅谈js中function的参数默认值
- 如何使用PHP对网站验证码进行破解
- php检索或者复制远程文件的方法
- thinkPHP多表查询及分页功能实现方法示例
- python中bisect模块用法实例
- JavaScript之生成器_动力节点Java学院整理
- javascript文件中引用依赖的js文件的方法
- php简单实现屏蔽指定ip段用户的访问
- JSP中实现判断客户端手机类型并跳转到app下载页面
- 提升JSP应用程序的七大绝招
- jQuery Study Notes学习笔记 (二)
- jquery中checkbox使用方法简单实例演示
- 随日期每天自动变换的文本的js特效
- javascript中BOM基础知识总结
- Java基于TCP方式的二进制文件传输
- C#中 const 和 readonly 的不同