Javascript 在任何模块/对象上调用特定函数

Javascript 在任何模块/对象上调用特定函数,javascript,python,Javascript,Python,在JavaScript中,我有多个不同的模块(对象)和一个名为“one”的函数 现在,如果变量“workingObj”中有一个模块/对象,我想调用 这个对象上的函数“one”,我称之为workingObj[“one”]() 目前我正在学习Python。在这种语言中有相似之处吗 我需要一个没有Python类/继承的解决方案 提前多谢 沃尔夫冈绝对!您所要做的就是利用“”并执行以下操作 class MyObj(object): def func_name(self): pri

在JavaScript中,我有多个不同的模块(对象)和一个名为“one”的函数

现在,如果变量“workingObj”中有一个模块/对象,我想调用 这个对象上的函数“one”,我称之为workingObj[“one”]()

目前我正在学习Python。在这种语言中有相似之处吗

我需要一个没有Python类/继承的解决方案

提前多谢


沃尔夫冈

绝对!您所要做的就是利用“”并执行以下操作

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谢谢男士:)我不知道它存在。更新了我的答案。:)