我应该将 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')
调用它
我有一个将工厂方法作为参数的函数。调用工厂方法将创建一个对象。现在想到可以直接指定想要的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')