Jaz*_*azz 5 parameters function python-3.x
我试图将一个函数分配为类属性,并在类的不同实例中为该函数指定特定参数。因此,如果我有两个实例foo和bar,我希望在它被调用时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)
有什么办法可以做到这一点吗?我真的不想为类的每个实例定义一个新函数,但我在搜索中没有找到任何有关它的信息。谢谢大家!
可以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)