我应该将MyClass .__ init__构造函数传递给工厂方法吗?

时间:2016-08-28 11:56:30

标签: python constructor factory-pattern

我有一个以工厂方法作为参数的函数。调用工厂方法将创建一个对象。现在我认为我可以直接指定所需对象/类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)

有没有办法直接指定构造函数而不需要创建其他方法?

1 个答案:

答案 0 :(得分:4)

只需传递课程本身:

>>> make_snack_for_jim(Fruit)
Making a fruit for Jim

这会将snack_factory设置为Fruitmake_snack_for_jim,然后使用snack_factory('Jim')

进行调用