我知道使用globals(),locals()和getattr通过字符串来反馈Python中的内容(如本问题所示),但除非我遗漏了一些明显的东西,否则我似乎无法使用它来调用类型.
例如:
In [12]: locals()['int']
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
e:\downloads_to_access\<ipython console> in <module>()
KeyError: 'int'
In [13]: globals()['int']
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
e:\downloads_to_access\<ipython console> in <module>()
KeyError: 'int'
getattr(???, 'int')...
Run Code Online (Sandbox Code Playgroud)
这样做的最佳方法是什么?
所以对于我正在处理的事情,我有一个相对复杂的设置,解释如下:
这是python。以及更多的粗略轮廓,但它涵盖了我需要的一切。尽管过程的下一个功能是相同的,但如果需要,请随时清理。
#timer event that runs every .1 second and processes events in a queue
some_event_timer():
events.process_next()
class Event_queue:
def __init__(self):
self.events = []
def push(self, event, parameters):
self.events.insert(len(self.events), event, parameters)
def process_next(self):
event = self.pop(0)
event[0](event[1])
class Foo:
def __init__(self, start_value = 1):
self.value = start_value
def update_value(self, multiple):
self.value *= multiple
def return_bah(self)
return self.value + 3
class Bar:
def __init__(self, number1, number2):
self.init = number1
self.add = number2
def print_alt_value(self, in_value):
print in_value * (self.init + self.add) …
Run Code Online (Sandbox Code Playgroud) 我想编写一个最简单的程序,让我有机会使用套接字和序列化。
基本思想是将数据以函数名和要处理的数据传送到服务器端。然后反序列化服务器端发送的这些数据,以调用函数并执行某些操作。然后发回响应。
现在发送到服务器的数据 - 我需要调用的 func 名称,我需要使用该 func 处理的数据。
我使用 pickle.loads 来解包数据,现在我有一个 func 名称作为 str 和字典来处理。如果我将它硬编码 - 它会起作用。
我需要调用的 func 名称 - func。但我希望能够调用将从客户端发送的任何函数。
我知道我需要使用 getattr 才能做到这一点。但是如何?我在这里和其他网站上阅读了几个问题,但仍然不知道我需要做什么。
是否可以在Objective C中按名称调用函数?例如,如果我知道函数的名称("foo"),有什么办法可以使用该名称获取指向函数的指针并调用它?我在这里偶然发现了类似的python问题,似乎有可能存在.我想将一个函数的名称作为用户的输入并调用该函数.此函数不必采用任何参数.
我有三个功能:
def function_1(arg_1, arg_1, arg_1, arg_1):
return sol_1
def function_2(arg_1, arg_2, arg_3, arg_4):
return sol_2
def function_3(arg_1, arg_2, arg_3, arg_4):
return sol_3
Run Code Online (Sandbox Code Playgroud)
我想用字符串调用它们:
myString = 'function_2'
eval(myString)
Run Code Online (Sandbox Code Playgroud)
但是我无法将参数传递给要传递给自定义定义的 eval 函数function_2
,因为它们不是同质的 ( np.array
, float
, float
, int
)。
def do_something(obj, func):
obj.func()
Run Code Online (Sandbox Code Playgroud)
我的问题是我怎么叫func
的obj
?func
是一个功能obj
.这甚至可能吗?
我打算用Python中函数名称的字符串调用模块的函数,但每当我在程序中调用我的类时,它都会给我这个错误:TypeError:必须使用foo实例作为第一个参数调用unbound方法bar() (没有得到任何东西)
有人能帮我吗
s = "func"
Run Code Online (Sandbox Code Playgroud)
现在假设有一个称为func的函数。当函数名以字符串形式给出时,如何在Python 2.7中调用func?
我想从字典中调用函数。可能吗?如果是这样,我将如何去做呢?
def function():
pass
my_dic = {
'hello': function()
}
Run Code Online (Sandbox Code Playgroud) 注意:类似的问题已经存在,尽管是针对C#.
我们假设我的代码如下所示:
class SomeClass:
def __init__(self):
pass
def do(self):
print("a")
class SomeOtherClass:
def __init__(self):
pass
def do(self):
print("b")
class B:
def __init__(self):
self.SomeClass = SomeClass()
self.SomeOtherClass = SomeOtherClass()
def __main__():
myclass = B()
desired_class = str(input("The method of which class do you want to execute? "))
myclass.desired_class.do()
Run Code Online (Sandbox Code Playgroud)
我不会在建造时知道SomeClass
将要调用什么方法.如果你有200种方法而且只有2种方法可供选择,那么if-then-else也不是很整洁.
如何在python中最有效地完成?
注意:method
将始终是现有的方法SomeClass
.
python ×9
python-3.x ×2
class ×1
dictionary ×1
eval ×1
getattr ×1
methods ×1
objective-c ×1
python-2.7 ×1
sockets ×1