【问题标题】:Call By string in Python [duplicate]在Python中通过字符串调用[重复]
【发布时间】:2013-12-30 05:11:22
【问题描述】:

我正在学习 Python。我想从字符串中调用一个函数。 我为此制作了一个示例程序。

class Calling:
    def __init__(self,a):
        self.Callto(a)
    def Callto(self,a):
        re=self.Hello(a)    
        print "Calling= "+re    # Here L= CallMe
        self.re()               # Error is in this line 
    def Hello(self,a):
        b="Me"
        return a+b  
    def CallMe():
        print "I am Called"

x=Calling("Call")

Traceback: AttributeError: Calling instance has no attribute 're'

到目前为止,我无法使用字符串调用函数。我该怎么做才能使这个字符串 ('re') 可调用? 感谢阅读

【问题讨论】:

  • 你为什么要这样做?
  • 我有另一个程序,它会通过打开 txt 文件来获取字符串值并一个一个地调用......但是那个程序非常大,可以分享......所以我做了一个示例问题......

标签: python class call function


【解决方案1】:

您可以将函数提供给 dict 并从那里调用它。

>>> def foo():
        print 'foo'



>>> def bar():
        print 'bar'


>>> funcs = {
             'foo':foo,
             'bar':bar
            }
>>> funcs['foo']()
foo
>>> funcs['bar']()
bar
>>> 

【讨论】:

  • 这是一个很好的答案,但是如果我可以动态编写 'foo':foo 那就太好了。在我的程序中,我将从 txt 文件中获取一个名为 foo 的字符串,我将不得不调用 foo.. 所以对我来说,没有选项可以手动编写 funcs{ 'All my functions'} ..
  • 如果您使用类/模块,您可以使用 getattr 函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-26
  • 2011-05-07
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
相关资源
最近更新 更多