Javascript 在任何模块/对象上调用特定函数
在JavaScript中,我有多个不同的模块(对象)和一个名为“one”的函数 现在,如果变量“workingObj”中有一个模块/对象,我想调用 这个对象上的函数“one”,我称之为workingObj[“one”]() 目前我正在学习Python。在这种语言中有相似之处吗 我需要一个没有Python类/继承的解决方案 提前多谢Javascript 在任何模块/对象上调用特定函数,javascript,python,Javascript,Python,在JavaScript中,我有多个不同的模块(对象)和一个名为“one”的函数 现在,如果变量“workingObj”中有一个模块/对象,我想调用 这个对象上的函数“one”,我称之为workingObj[“one”]() 目前我正在学习Python。在这种语言中有相似之处吗 我需要一个没有Python类/继承的解决方案 提前多谢 沃尔夫冈绝对!您所要做的就是利用“”并执行以下操作 class MyObj(object): def func_name(self): pri
沃尔夫冈绝对!您所要做的就是利用“”并执行以下操作
class MyObj(object):
def func_name(self):
print "IN FUNC!"
my_obj = MyObj()
# Notice the () invocation
getattr(my_obj, "func_name")() # prints "IN FUNC!"
绝对是!您所要做的就是利用“”并执行以下操作
class MyObj(object):
def func_name(self):
print "IN FUNC!"
my_obj = MyObj()
# Notice the () invocation
getattr(my_obj, "func_name")() # prints "IN FUNC!"
你可以用
现在您可以使用get_one
从任何对象获取one
,并像这样调用它
call_one(obj)
优于getattr
除了它的可读性和惯用性之外,您不必为每个对象调用methodcaller
,这与getattr
不同。创建一次,并使用它,只要你想与尽可能多的对象
比如说,
class MyClass1(object): # Python 2.x new style class
def one(self):
print "Welcome"
class MyClass2(object): # Python 2.x new style class
def one(self):
print "Don't come here"
from operator import methodcaller
call_one = methodcaller("one")
obj1, obj2 = MyClass1(), MyClass2()
call_one(obj1) # Welcome
call_one(obj2) # Don't come here
你可以用
现在您可以使用get_one
从任何对象获取one
,并像这样调用它
call_one(obj)
优于getattr
除了它的可读性和惯用性之外,您不必为每个对象调用methodcaller
,这与getattr
不同。创建一次,并使用它,只要你想与尽可能多的对象
比如说,
class MyClass1(object): # Python 2.x new style class
def one(self):
print "Welcome"
class MyClass2(object): # Python 2.x new style class
def one(self):
print "Don't come here"
from operator import methodcaller
call_one = methodcaller("one")
obj1, obj2 = MyClass1(), MyClass2()
call_one(obj1) # Welcome
call_one(obj2) # Don't come here
你好,布莱恩!Python中的“my_obj”是什么样子?谢谢,很抱歉,您需要更多的上下文,我已经相应地更新了答案
getattr
可能有些过分。最可能的情况是,您只需要my_obj.func\u name()
。你好,布莱恩!Python中的“my_obj”是什么样子?谢谢,很抱歉,您需要更多的上下文,我已经相应地更新了答案getattr
可能有些过分。最有可能的情况是,您只需要my_obj.func\u name()
。您不使用workingObj.one()
有什么特殊原因吗?您不知道您将提前调用哪个方法吗?您好,用户2357112!在某些情况下我知道函数的名称,而在另一些情况下我不知道。您不使用workingObj.one()
有什么特殊原因吗?您不知道您将提前调用哪个方法吗?您好,用户2357112!在某些情况下我知道函数的名称,而在另一些情况下我不知道。如果您要使用操作符
,为什么不使用操作符.methodcaller
?@user2357112谢谢man:)我不知道它存在。更新了我的答案。:)如果您要使用操作符
,为什么不使用操作符.methodcaller
?@user2357112谢谢男士:)我不知道它存在。更新了我的答案。:)