我有一个以工厂方法作为参数的函数。调用工厂方法将创建一个对象。现在我认为我可以直接指定所需对象/类Fruit.__init__
的构造函数作为工厂方法。但这不起作用,因为self
参数确实“不存在”。所以我必须引入另一个构建对象的方法fruit_factory
:
def fruit_factory(owner):
return Fruit(owner)
class Fruit:
def __init__(self, owner):
print('Making a fruit for ' + owner)
def make_snack_for_jim(snack_factory):
snack_factory('Jim')
make_snack_for_jim(fruit_factory) # Works, but needs additional function
make_snack_for_jim(Fruit.__init__) # Does not work (no 'self' argument)
有没有办法直接指定构造函数而不需要创建其他方法?
答案 0 :(得分:4)
只需传递课程本身:
>>> make_snack_for_jim(Fruit)
Making a fruit for Jim
这会将snack_factory
设置为Fruit
,make_snack_for_jim
,然后使用snack_factory('Jim')