python 通过 实例方法 名字的字符串调用方法

枫铃3年前 (2021-09-30)Python211

方式1 - 反射

hasattr 方法

判断当前实例中是否有着字符串能映射到的属性或者方法, 一般会在 getattr 之前作为判断防止报错

getattr 方法

获取到当前实例中传入字符串映射到的属性或者方法

示例

class A(object):
    def run(self):
        return "run"

a = A()

print hasattr(a, "run")         # True
print getattr(a, "run")         # <bound method A.run of <__main__.A object at 0x0000000002A57160>>
print getattr(a, "run")()       # run

方式2 - operator 模块

methodcaller 方法

  • 参数

传入两个参数, 分别为字符串表示映射的方法, 另一个参数为此方法的运行参数,

  • 返回值

返回一个 字符串映射到的方法实例

示例

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import operator

class A(object):
    def run(self):
        return "run"

    def eat(self, s):
        return s + ": eat"

a = A()

print operator.methodcaller("run")  # <operator.methodcaller object at 0x0000000002ADAC08>
print operator.methodcaller("run")(a)   # run
print operator.methodcaller("eat", "yangtuo")(a)    # yangtuo: eat

相关文章

python 各层级目录下的import方法

以前经常使用python2.现在很多东西都切换到了python3,发现很多东西还是存在一些差异化的。跨目录import是常用的一种方法ÿ...

python字符串驻留(intern)机制

对于短字符串࿰...

python编码类型互转总结

python编码类型互转总结

1、只有在unicode下才能将utf-8与gbk互转 2、unicode是在内存中使用,bytes是文件存储和网络传输时使用 py3时&#x...

为什么Python类语法应该不同?

如果您已经使用了任何编程语言很长一段时间,您就会发现您想要的东西跟它原有的是不同的。Python对我来说是真的是这样。如果可以的话,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。