Skip to main content
 首页 » 编程设计

python之在python中对象实例化之前将方法传递给函数

2025年05月04日15lexus

我有一个名为“App”的类,它有几个方法。我想编写一个函数来创建 App 的多个实例,并为每个实例使用其中一种方法。如何将方法名称作为参数传递给函数?

代码示例:

class App(object): 
 
    def __init__(self, id): 
        self.id = id 
 
    def method_1(self): 
        result1 = self.id + 1 
        return result1 
 
    def method_2(self): 
        result2 = self.id + 2 
        return result2 
 
def use_method_for_each_instance(method): 
    all_results = [] 
    for id in id_list: 
        app_instance = App(id) 
        all_results.append(app_instance.method()) 
    return all_results 
 
id_list = [1,2,3] 
use_method_for_each_instance(method_1) 

使用这段代码,我得到“NameError: name 'method_1' is not defined”,这是合乎逻辑的,因为 method_1 仅在创建“App”对象时定义。 您能帮我更改代码以避免该错误吗?

请您参考如下方法:

您可以使用类命名空间中的函数。

def use_method_for_each_instance(method): 
    all_results = [] 
    for id in id_list: 
        app_instance = App(id) 
        all_results.append( method(app_instance) ) 
    return all_results 
 
id_list = [1,2,3] 
use_method_for_each_instance(App.method_1)