我应该通过MyClass吗__init__构造函数到工厂方法



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

有没有一种方法可以直接指定构造函数,而不需要创建额外的方法?

只需传入类本身:

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

这会将snack_factory设置为make_snack_for_jim内部的Fruit,然后使用snack_factory('Jim') 调用

相关内容

最新更新