Python 用字符串名调用方法

使用字符串名称调用方法的Python编程技巧 在Python编程中,我们通常使用点运算符来调用对象的方法。但是,有时候我们可能需要使用字符串来动态地调用方法,这在某些情况下非常有用。函数接受三个参数:对象、方法名称的字符串表示以及对应的方法引用。它可以将方法绑定到对象上,使得我们可以通过字符串名称调用该方法。它会返回对应方法的引用,然后我们可以像调用普通方法一样使用它。函数,我们可以根据字符串名称获取对象的方法,并通过调用该方法来执行相应的操作。函数,我们可以动态地将方法绑定到对象上,使得我们可以通过字符串名称调用该方法。函数来动态设置对象的方法。 阅读详情

有时候,一些特殊情况,需要用到用字符串的方法名去调用方法。现在做个笔记避免以后一直搜。

官网示例
  • 官方中文文档3.8 https://docs.python.org/zh-cn/3/faq/programming.html#how-do-i-use-strings-to-call-functions-methods
StackOverflow
  • StackOverflow https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string
官网搬运

如何使用字符串调用函数/方法?
有多种技巧可供选择。

  • 最好的做法是使用一个将字符串映射到函数的字典。 这一技巧的主要优势在于字符串不必与函数名称一致。 这也是用于模拟其他语言中 case 结构的主要技巧:

def a():
    pass

def b():
    pass

dispatch = {'go': a, 'stop': b}  # Note lack of parens for funcs

dispatch[get_input()]()  # Note trailing parens to call function
  • 使用内置函数 getattr()
import foo
getattr(foo, 'bar')()

请注意 getattr() 可用于任何对象,包括类、类实例、模块等等。

在标准库中多次使用了这个技巧,例如:

class Foo:
    def do_foo(self):
        ...

    def do_bar(self):
        ...

f = getattr(foo_instance, 'do_' + opname)
f()
  • 使用 locals() 或 eval() 来解析出函数名:
def myFunc():
    print("hello")

fname = "myFunc"
f = locals()[fname]
f()

f = eval(fname)
f()

注意:使用 eval() 速度慢而且危险。 如果你不能绝对掌控字符串的内容,别人将能传入可被解析为任意函数直接执行的字符串。

Django3-Xadmin3修复版.zip Xadmin2和Django3不兼容,为了让它们协调工作修改其源码,此为修复版! 使用方法:将Django-3.0.6.tar.gz和xadmin-django3.0.6.tar.gz解压缩,使用setup方式安装即可! 立即下载

相关推荐

别再用MounRiver了!在VSCode里用PlatformIO搞定CH32V208开发(附完整配置流程)

本文详细介绍了如何在VSCode中使用PlatformIO进行CH32V208开发,替代传统的MounRiver Studio。通过完整的配置流程和优化技巧,开发者可以构建高效、现代化的RISC-V开发环境,显著提升编译速度和开发效率。

weixin_28711397的博客 537

Python中字符串类型代码的执行函数——eval()、exec()和compile()

如果是single类型,表示这是一个单一语句,采用交互模式执行,在这种情况下,如果是一个表达式,一般会输出结果,而不是打印为None输出。参数,所以我们要将该递归函数转化成一个字符串,当然,格式还是要Python代码的格式来,注意换行和缩进。locals:该参数掌控局部的命名空间,功能和globals类型,不过当参数冲突时,会执行locals处的参数。如果是eval类型,表示这是一个单一的表达式语句,可以用来计算相应的值出来;flags:变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

GMH的博客 2627

华三R4900 G5服务器实战:用PMC P460-B4阵列卡配置RAID1+RAID6,并搞定CentOS 7.9安装(含热备盘设置)

本文详细解析了在华三R4900 G5服务器上使用PMC P460-B4阵列卡配置RAID1+RAID6混合阵列的全过程,包括热备盘设置和CentOS 7.9系统安装。通过实战步骤和性能优化建议,帮助企业IT人员高效部署高可用存储方案,特别适合需要数据冗余和系统稳定性的企业级应用场景。

weixin_29248653的博客 358

python 用字符串当做方法名,参数名

1、有些时候我们接收到一个字符串,需要调用这个字符串表示的方法这个时候可以用到 getattr()拿requests库来举个栗子requests 有get post put 等方法 我们可以这样写函数 import requests def req_mode(url, requests_type): res = getattr(requests, requests_...

吕海洋的博客 3791

EB TRESOS 29.0.0安装教程用于MCAL配置开发

本文介绍的搭建基于NXP官网提供EB软件,进行基于标准AUTOSAR软件底层驱动配置的开发

qq_53260940的博客 1882

在MacBook M1/M2上,手把手教你打包包含嵌入模型的RagFlow Docker镜像(避坑指南)

本文详细指导如何在MacBook M1/M2上构建ARM64架构的RagFlow Docker镜像,涵盖环境准备、依赖处理、镜像构建及性能优化全流程。特别针对Apple Silicon芯片的兼容性问题提供解决方案,帮助开发者高效完成本地开发环境搭建。

weixin_26908317的博客 242

小笔记:Python 使用字符串调用函数

【简介】 使用字符串调用函数是一个常用的编程技巧,在大型项目中可以用于实现钩子管理系统。本文指在 介绍 两个 python 内置函数,即 getattr 函数 和 locals 函数。

jclee95的个人博客 1376

Vatti clipping 算法:从概念到实现的图形裁剪核心

本文深入解析Vatti clipping算法在图形处理中的核心应用,从基础概念到高效实现,涵盖多边形裁剪、合并、差集和交集等布尔运算。通过实战案例和优化技巧,展示该算法在处理自相交多边形、带孔洞图形等复杂场景中的卓越性能,适合CAD、路径规划等工业级应用。

weixin_30621959的博客 692

Python学习之抽象

1.Python可以为函数指定别名,import math; y = math.sqrt; callable(y): True #判断是否可调用,即是否是函数 2.函数与条件语句以及循环语句一样,也是通过缩进来识别,不同的是,由于函数用于重复调用,所以需要为其指定一个别名,一个标号: def hello(name): #冒号不可忽略 print 'Hello, '+name+'!' ret

oahsgnat的专栏 499

从MFCC到GMM:手把手教你用Python实现说话人识别(附完整代码)

本文详细介绍了如何使用Python实现说话人识别系统,从MFCC特征提取到GMM模型训练,涵盖完整的技术流程和代码示例。通过梅尔频率倒谱系数(MFCC)和高斯混合模型(GMM)的结合,构建高效的说话人识别系统,适用于身份认证和智能交互场景。文章还探讨了从传统方法到深度学习的进阶话题,如i-vector和x-vector技术。

o1p2q3r的博客 201

win2012没有远程桌面授权服务器可以提供许可证 如何远程

如果远程windows服务器时,提示“没有远程桌面授权服务器可以提供许可证 如何远程”,先通过以下方式进行强制登录,然后在对服务器进行设置即可,延期使用。 强制登录服务器方式; 1、运行—输入:mstsc /admin /v ip:端口 回车即可 2、进入远程桌面,输入 ip:端口 /admin 例如:mstsc /admin /v 192.168.0.131:23568 进入服务器以后,按照以下步骤进行设置即可: ...

蜗牛快爬 1万+

python通过字符串来调用函数

导读 有时候我们想要通过字符串来直接调用函数,方便通过输入的参数来直接控制调用的函数 常规操作 def function1(): print("function1") def function2(): print("function2") def function3(): print("function3") def call_fun_by_str(fun_str): if fun_str == "function1": function1()

修炼之路 1万+

(十一)随机性与独立性回顾

随机性与独立性回顾

旺旺的碎冰冰~的博客 1018

python字符串调用类_python 使用字符串名调用类以及调用类方法名

在python中,有时调用者仅知道类名和类方法,不负责实际的函数调用,而是将要调用的类名和类方法告诉一个中间函数,由中间函数负责实际调用函数。中间函数需以被告知的字符串调用类和类方法。 在万物皆对象,我们需要将传进来的字符串转化为类对象,这里我...

weixin_40000131的博客 513

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python方法调用名字不一样_python 使用字符串名调用类以及调用类方法名

在python中,有时调用者仅知道类名和类方法,不负责实际的函数调用,而是将要调用的类名和类方法告诉一个中间函数,由中间函数负责实际调用函数。中间函数需以被告知的字符串调用类和类方法。 在万物皆对象,我们需要将传进来的字符串转化为类对象,这里我...

weixin_39624071的博客 110

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python 使用字符串名调用类以及调用类方法名

在python中,有时调用者仅知道类名和类方法,不负责实际的函数调用,而是将要调用的类名和类方法告诉一个中间函数,由中间函数负责实际调用函数。中间函数需以被告知的字符串调用类和类方法。 在万物皆对象,我们需要将传进来的字符串转化为类对象,这里...

u014358963的博客 112

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python 输入名字输出hello名字_python 使用字符串名调用类以及调用类方法名

在python中,有时调用者仅知道类名和类方法,不负责实际的函数调用,而是将要调用的类名和类方法告诉一个中间函数,由中间函数负责实际调用函数。中间函数需以被告知的字符串调用类和类方法。 在万物皆对象,我们需要将传进来的字符串转化为类对象,这里我...

weixin_39631445的博客 1354

Python | 动态调用函数

本文总结如何动态调用函数的几种方法。

MissMango0820的博客 1175

python调用函数讲解_python 动态调用函数实例解析

1. 根据字符串名称 动态调用 python文件内的方法eval("function_name")(参数)2. 根据字符串 动态调用类中的静态方法,getattr(ClassName,"function_name")(参数)3. apply(functoin_name,parameters) 这个function_name不是字符串,而是函数对象本身;parameters是参数,类似(a,b,.....

weixin_39929715的博客 247

python中反射 getattr(对象,'方法')()和hasattr(对象,'方法')

getattr(对象,'方法')():从一个对象里面找到里面的方法,,, 传了一个对象,再传一个字符串,就能找到这个字符串的方法 hasattr(对象,'方法')  判断这个对象里面有没有这个方法,返回True和False 用在类里面的使用 转载于:https://www.cnblogs.com/mihoutao/p/10974895.html...

weixin_30600503的博客 195

python,字典,只保留字符串数字字母

今天偶然写到一个在字典里面查找键 a in dict.keys() a in dict 发现第二种写法速度比第一种快

eight_Jessen的博客 529

Python 通过字符串调用类方法或方法

问题描述 今天遇到个问题,在一个类里面,想要通过字符串调用类里面的方法,即(注意,以下为错误代码演示,只是为了表述问题): class A(object): def a(self): print('xxxxx') def b(self): c= 'a' self.c() test = A() test.b() 如上面代码所示,在b函数里面,我将字符 a 赋值...

GodLordGee的博客 1万+

python根据字符串调用类_Python 通过字符串调用类方法或方法

问题描述今天遇到个问题,在一个类里面,想要通过字符串调用类里面的方法,即(注意,以下为错误代码演示,只是为了表述问题):class A(object):def a(self):print('xxxxx')def b(self):c= 'a'self.c()test = A()test.b()如上面代码所示,在b函数里面,我将字符 a 赋值给了 c ,然后在后面,想要通过 self.c() 的方式,...

weixin_36054508的博客 1417

windows下python调用dll的方法

windows下python调用dll的方法VS生成dll可供python调用的dll生成python调用dll方法传入实数demo传入指针demo1传入指针demo2传入字符串demo传入字符串指针并返回字符串demo完整代码 VS生成dll 关于VS生成dll文件供另一个C++程序调用的方法请参考我的这篇blog: VS生成动态链接库dll的方法 可供python调用的dll生成 在生成dll...

wolfcsharp的博客 2万+

python调用方法内的函数_Python 通过字符串调用类方法或方法

问题描述今天遇到个问题,在一个类里面,想要通过字符串调用类里面的方法,即(注意,以下为错误代码演示,只是为了表述问题):class A(object):def a(self):print('xxxxx')def b(self):c= 'a'self.c()test = A()test.b()如上面代码所示,在b函数里面,我将字符 a 赋值给了 c ,然后在后面,想要通过 self.c() 的方式,...

weixin_39687422的博客 641
上一篇: Python 时间戳操作,获取整点凌晨时间戳,格式化“2020-10-16T17:36:00+08:00“时间
下一篇: 记录一次逆向小程序破解加密js的方法
wgPython
博客等级 码龄9年 100粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值