Python:如何为函数添加特定参数的别名?

Jaz*_*azz 5 parameters function python-3.x

我试图将一个函数分配为类属性,并在类的不同实例中为该函数指定特定参数。因此,如果我有两个实例foobar,我希望在它被调用时foo.func()运行并在它被调用时运行。function(param1)bar.func()function(param2)

我尝试过这样的事情:

class Class:
    def __init__(self, func):
        self.func = func

foo = Class(function(param1))
bar = Class(function(param2)) 
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,该foo = Class(function(param1))语句只是执行function(param1)而不是创建一个新的 Class 实例。如果我尝试单独为该函数添加别名,则会出现同样的问题,例如:

alias_func = function(param1)
foo = Class(alias_func)
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到这一点吗?我真的不想为类的每个实例定义一个新函数,但我在搜索中没有找到任何有关它的信息。谢谢大家!

Pat*_*ugh 4

可以functools.partial正常使用:

from functools import partial

class MyClass:
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z

abc = partial(MyClass, 'a', 'b', 'c')

test1 = abc()
test2 = abc()

print(test1.x)            # prints a
assert test1 is not test2 # Make sure abc is producing different objects
Run Code Online (Sandbox Code Playgroud)