在python中,有时调用者仅知道类名和类方法,不负责实际的函数调用,而是将要调用的类名和类方法告诉一个中间函数,由中间函数负责实际调用函数。中间函数需以被告知的字符串调用类和类方法。                                                                               在万物皆对象,我们需要将传进来的字符串转化为类对象,这里我们可以使用eval实现。而以字符串形式调用类方法,可以使用内置方法getattr实现,以下是详细例子。

class SayHello():
def say(self):
print 'hello' if __name__ == '__main__':
# normal call class method
i_s_h = SayHello()
i_s_h.say()
# use string call class method
c_str = eval('SayHello')()
print c_str
c_str.say()
# direct use class method
getattr(c_str,'say')()

以上输出:

hello
<__main__.SayHello instance at 0x0000000002242848>
hello
hello
[Finished in 0.3s]

python 使用字符串名调用类以及调用类方法名的更多相关文章

  1. C#反射实例化类并调用类的方法

    反射提高了程序的灵活性和扩展性,降低耦合性,提高自适应能力. 它允许程序创建和控制任何类的对象,无需提前硬编码目标类: SalBLL a = (SalBLL)Assembly.Load("B ...

  2. 如何获得JVM执行过程中调用的方法名

    这应该分成两个问题,1.如何获取参数值. 2.如何获取参数名, 1.如何获取参数值.这个是运行时的数据,你程序处理下获取就好了.比如写一个代理 2.参数名是在编译的时候就写入到class文件的.,而这 ...

  3. python: 面向对象:类和对象调用类中的变量和方法

    一. 面向对象初识 我们在生活中做事都是面向过程的,前面实现一些基本逻辑功能代码也是用面向过程的语句实现的,后来学了函数,把这些功能又装到了函数里.但用面向过程的方法去写程序,只能实现一个功能,我们要 ...

  4. Python基础总结之初步认识---clsaa类(上)。第十四天开始(新手可相互督促)

    最近的类看着很疼,坚持就是胜利~~~ python中的类,什么是类?类是由属性和方法组成的.类中可能有很多属性,以及方法. 我们这样定义一个类: 前面是class关键字 后面school是一个类的名字 ...

  5. Python进阶(十四)----空间角度研究类,类与类之间的关系

    Python进阶(十四)----空间角度研究类,类与类之间的关系 一丶从空间角度研究类 对象操作对象属性 class A(): address = '沙河' def __init__(self, na ...

  6. hashlib模块,shutil,模块 ,,xml 文件解析,configparser,模块,类,什么是类

    1 什么是hash hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值 如果把hash算法比喻为一座工厂 那传给hash算法的内容就是原材料 生成的hash值就是生产出的产品 2.为 ...

  7. .NET 中获取调用方法名

    在写记录日志功能时,需要记录日志调用方所在的模块名.命名空间名.类名以及方法名,想到使用的是反射(涉及到反射请注意性能),但具体是哪一块儿还不了解,于是搜索,整理如下: 需要添加相应的命名空间: us ...

  8. python中一个py文件如何调用其他py文件中的类和函数

    HelloWorld  文件名称  Hello是类 from HelloWorld import Hello >>> h = Hello() >>> h.hello ...

  9. C# 如何利用反射,将字符串转化为类名并调用类中方法

    首先,先随便创建一个测试类 <span style="font-family:Microsoft YaHei;font-size:18px;">public class ...

随机推荐

  1. java -json()

    json-lib和org.json的使用几乎是相同的,我总结出的区别有两点: 两种包 1. List集合转换成json方法 List list = new ArrayList(); list.add( ...

  2. http://bbs.ednchina.com/BLOG_345002072_2001308.HTM

    http://bbs.ednchina.com/BLOG_345002072_2001308.HTM

  3. java中时间比较

    package com.newtouch.test; import java.text.SimpleDateFormat;import java.util.Date; public class Tim ...

  4. spring mvc 定时器

    1.下载quartz-all-1.7.3.jar包 a.在Spring配置和Quartz集成内容时,有两点需要注意 b.在<Beans>中不能够设置default-lazy-init=&q ...

  5. cf732f

    思路:先缩点,再以最大连同分量为根dfs,代码太垃圾不想贴

  6. C#创建文件夹

    string path = Server.MapPath("~/DefaultImg/newDir/63/");//获取文件路径 if (!Directory.Exists(pat ...

  7. 执行超过1个小时的SQL语句

    SELECT MO.MO_ID, MO.ITEM, MO.QTYORDERED, MO.PLANNEDSTARTDATE, BR.MAXLOTSIZE FROM TEMP_MO MO, (SELECT ...

  8. 使用date类和format类对系统当前时间进行格式化显示

    一:Date------------String 代码1:(代码二对显示出来的时间格式进行优化) package DateDemo; import java.text.SimpleDateFormat ...

  9. java io流之BufferReader&BufferedWriter

    BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取一个文本行,从字符输入流中读取文本,缓冲各个字符,从而提供字符.数组和行的高 ...

  10. mysql 行转列 和 列转行

    我们有时会将一些数据已逗号的连接方式存在数据库,当取出时我们又想单独一个个取出来 利用help_topic 的自增性 LENGTH(wu.`password`) - length(replace(wu ...