工厂函数(Factory Function)是一种设计模式,用于创建和返回对象的函数。
它的核心思想是将对象的创建逻辑封装在一个函数中,而不是直接调用构造函数。
工厂函数的主要目的是提供一种灵活、可扩展的方式来创建对象,同时隐藏对象创建的复杂性。
示例:
class Dog:
def speak(self):
return "Woof!"
class Cat:
def speak(self):
return "Meow!"
def animal_factory(animal_type):
if animal_type == "dog":
return Dog()
elif animal_type == "cat":
return Cat()
else:
raise ValueError("Unknown animal type")
# 使用工厂函数创建对象
dog = animal_factory("dog")
cat = animal_factory("cat")
print(dog.speak()) # 输出: Woof!
print(cat.speak()) # 输出: Meow!
使用 partial
的工厂函数
partial
是 Python 中 functools
模块提供的一个工具,用于部分初始化函数。它允许你固定函数的一部分参数,生成一个新的函数,这个新函数只需要传入剩余的参数即可。
partial
的核心思想是函数柯里化(Currying),即将一个多参数函数转换为一系列单参数函数。
语法
from functools import partial new_func = partial(func, *args, **kwargs)
func
:原始函数。*args
:固定的位置参数。**kwargs
:固定的关键字参数。new_func
:生成的新函数。
示例:
from functools import partial
# 原始函数
def add(a, b, c):
return a + b + c
# 固定第一个参数为 1,生成新函数
add_one = partial(add, 1)
# 调用新函数
print(add_one(2, 3)) # 输出: 6 (即 1 + 2 + 3)