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

Should I pass MyClass.__init__ constructor into factory method?

我有一个将工厂方法作为参数的函数。调用工厂方法将创建一个对象。现在想到可以直接指定想要的object/classFruit.__init__的构造函数作为工厂方法。但这不起作用,因为 self 参数会 "not exist" 然后。所以我必须引入一个额外的方法 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)

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

只需传入 class 本身:

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

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

调用它