相关疑难解决方法(0)

使用Ruby中的方法名称从字符串调用方法

我怎么能在这里做他们正在谈论的事情,但是在Ruby中呢?

你会如何对对象执行此功能?你将如何做一个全局函数(参见jetxee 在上述帖子中的回答)?

示例代码:

event_name = "load"

def load()
  puts "load() function was executed."
end

def row_changed()
  puts "row_changed() function was executed."
end 

#something here to see that event_name = "load" and run load()
Run Code Online (Sandbox Code Playgroud)

更新: 你如何得到全球方法?还是我的全球职能?

我试过这个额外的一行

puts methods
Run Code Online (Sandbox Code Playgroud)

和load和row_change未列出的地方.

ruby metaprogramming

151
推荐指数
3
解决办法
9万
查看次数

python中重载的函数?

是否有可能在Python中重载函数?在C#中,我会做类似的事情

void myfunction (int first, string second)
{
//some code
}
void myfunction (int first, string second , float third)
{
//some different code
}
Run Code Online (Sandbox Code Playgroud)

然后当我调用函数时,它会根据参数的数量区分两者.是否有可能在Python中做类似的事情?

python arguments overloading function

83
推荐指数
3
解决办法
9万
查看次数

Python:从字符串名称调用函数

我有一个str对象,例如:menu = 'install'.我想从这个字符串运行install方法.例如,当我打电话时,menu(some, arguments)它会打电话install(some, arguments).有没有办法做到这一点?

python

72
推荐指数
3
解决办法
10万
查看次数

按名称调用Python方法

如果我在字符串中有对象和方法名称,我该如何调用该方法?

class Foo:
    def bar1(self):
        print 1
    def bar2(self):
        print 2

def callMethod(o, name):
    ???

f = Foo()
callMethod(f, "bar1")
Run Code Online (Sandbox Code Playgroud)

python

67
推荐指数
2
解决办法
5万
查看次数

如何动态调用Python函数

我有这个代码:

fields = ['name','email']

def clean_name():
    pass

def clean_email():
    pass
Run Code Online (Sandbox Code Playgroud)

我怎么能叫clean_name()clean_email()动态?

例如:

for field in fields:
    clean_{field}()
Run Code Online (Sandbox Code Playgroud)

我使用了花括号,因为它是我以前在PHP中使用它的方式,但显然不起作用.

如何用Python做到这一点?

python functional-programming

49
推荐指数
7
解决办法
5万
查看次数

Python - 如何通过名称动态调用对象上的函数?

在python中,假设我有一个字符串,其中包含我知道特定对象将具有的类函数的名称,如何调用它?

那是:

obj = MyClass() # this class has a method doStuff()
func = "doStuff"
# how to call obj.doStuff() using the func variable?
Run Code Online (Sandbox Code Playgroud)

python

45
推荐指数
1
解决办法
3万
查看次数

如何在Python中获取对象的名称?

有没有办法在Python中获取对象的名称?例如:

my_list = [x, y, z] # x, y, z have been previously defined

for bla in my_list:
    print "handling object ", name(bla) # <--- what would go instead of `name`?
    # do something to bla
Run Code Online (Sandbox Code Playgroud)

编辑:一些上下文:

我实际上在做的是创建一个我可以通过命令行指定的函数列表.

我有:

def fun1:
    pass
def fun2
    pass
def fun3:
    pass

fun_dict = {'fun1': fun1,
            'fun2': fun2,
            'fun3': fun3}
Run Code Online (Sandbox Code Playgroud)

我从命令行获取函数的名称,我想调用相关函数:

func_name = parse_commandline()

fun_dict[func_name]()
Run Code Online (Sandbox Code Playgroud)

我想拥有该函数名称的原因是因为我想创建fun_dict两次函数的名称,因为这似乎是创建错误的好方法.我想做的是:

fun_list = [fun1, fun2, fun3] # and I'll add more as the need arises

fun_dict …
Run Code Online (Sandbox Code Playgroud)

python introspection

29
推荐指数
5
解决办法
9万
查看次数

如何使用方法名称赋值给变量动态调用类中的方法

class MyClass:

    def __init__(self, i):
          self.i = i

    def get(self):
          func_name = 'function' + self.i
          self.func_name() # <-- this does NOT work.

    def function1(self):
          //do something

    def function2(self):
          //do something
Run Code Online (Sandbox Code Playgroud)

我得到的错误:TypeError:'str'对象不可调用

有人可以帮忙解决这个问题.我尝试了很多排列和组合,但无济于事!(注意:'self.func_name'也不起作用)

python

29
推荐指数
2
解决办法
3万
查看次数

使用字符串在Python中调用函数

几天前我在网上搜索,我发现了一篇关于python词典的有趣文章.它是关于使用字典中的键来调用函数.在那篇文章中,作者定义了一些函数,然后是一个字典,其键与函数名完全相同.然后他可以从用户那里获得一个输入参数并调用相同的方法(类似于实现大小写).之后我意识到了同样的事情,但不知何故有所不同.我想知道如何实现这一点.如果我有一个功能:

def fullName( name = "noName", family = "noFamily" ):
    return name += family
Run Code Online (Sandbox Code Playgroud)

现在,如果我有这样的字符串:

myString = "fullName( name = 'Joe', family = 'Brand' )"
Run Code Online (Sandbox Code Playgroud)

有没有办法执行这个查询并得到一个结果:JoeBrand
例如我记得的是我们可能会给exec()语句一个字符串,它为我们做了.但是我不确定这个特例,而且我也不知道Python的有效方法.而且我将非常感谢帮助我如何处理函数返回值,例如在我的情况下如何打印该函数返回的全名?

python string function

24
推荐指数
3
解决办法
5万
查看次数

Python:将函数名称作为函数中的参数传递

我试图将函数的名称作为参数传递给另一个函数,但我得到一个错误:"TypeError:'str'对象不可调用".以下是该问题的简化示例:

def doIt(a, func, y, z):
    result = z
    result = func(a, y, result)
    return result

def dork1(arg1, arg2, arg3):
    thing = (arg1 + arg2) / arg3
    return thing

def dork2(arg1, arg2, arg3):
    thing = arg1 + (arg2 / arg3)
    return thing
Run Code Online (Sandbox Code Playgroud)

我打电话的时候是这样的:

var = 'dork1'
ned = doIt(3, var, 4, 9)
print (ned)
Run Code Online (Sandbox Code Playgroud)

我明白了:

Traceback (most recent call last):
   File "<pyshell#9>", line 1, in <module>
     ned = doIt(3, var, 4, 9)
   File "<pyshell#2>", line 3, in doIt
     result = …
Run Code Online (Sandbox Code Playgroud)

python

20
推荐指数
3
解决办法
4万
查看次数