【发布时间】:2018-01-11 22:57:40
【问题描述】:
我正在尝试将函数分配为类属性,并在类的不同实例中为函数指定特定参数。所以,如果我有两个实例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))
但是当我运行它时,foo = Class(function(param1)) 语句只是执行function(param1) 而不是创建一个新的 Class 实例。如果我尝试单独为函数起别名,也会出现同样的问题,例如:
alias_func = function(param1)
foo = Class(alias_func)
有没有办法做到这一点?我真的不想为类的每个实例定义一个新函数,但我在搜索中没有找到任何关于它的东西。提前谢谢大家!
【问题讨论】:
-
听起来您可能正在寻找
functools.partial -
@PatrickHaugh 这正是我想要的,谢谢!您是否知道是否有类的等价物来创建具有特定参数的实例?
-
你能说得更具体一点吗?您是想拥有一个具有偏函数作为属性的类,还是尝试创建一个可以生成对象的偏函数?
-
第二个,我想。例如,我想分配 var = Class(x=1, y=2, z=3) 然后使用“instance = var”而不是“instance = Class(x=1, y=2”创建一个实例, z=3)"
标签: python-3.x function parameters