python —— 偏函数 —— functools.partial 和 functools.partialmethod
代码: functools.partialmethod
from functools import partial, partialmethod
class ImageProcessor:
def __init__(self, image_path) -> None:
self.image_path = image_path
def process(self, operation, *args, **kwargs):
print(f"processing image {self.image_path} 执行操作: {operation}")
print(f"{args} {kwargs}")
def crop(self, x, y, width, height):
print(f"cropping image {self.image_path} {x} {y} {width} {height}")
return self.process("crop", x=x, y=y, width=width, height=height)
default_crop = partialmethod(crop, 100, 100, 200, 200)
small_crop = partialmethod(crop, 50, 50, 100, 100)
large_crop = partialmethod(crop, 200, 200, 400, 400)
image_processor = ImageProcessor("image.jpg")
image_processor.default_crop()
image_processor.small_crop()
image_processor.large_crop()
运行效果:

代码: functools.partial
from functools import partial, partialmethod
class ImageProcessor:
def __init__(self, image_path) -> None:
self.image_path = image_path
def process(self, operation, *args, **kwargs):
print(f"processing image {self.image_path} 执行操作: {operation}")
print(f"{args} {kwargs}")
def crop(self, x, y, width, height):
print(f"cropping image {self.image_path} {x} {y} {width} {height}")
return self.process("crop", x=x, y=y, width=width, height=height)
# default_crop = partialmethod(crop, x=100, y=100, width=200, height=200)
# small_crop = partialmethod(crop, 50, 50, 100, 100)
# large_crop = partialmethod(crop, 200, 200, 400, 400)
default_crop = partial(lambda self: self.crop(100, 100, 200, 200))
small_crop = partial(lambda self: self.crop(50, 50, 100, 100))
large_crop = partial(lambda self: self.crop(200, 200, 400, 400))
image_processor = ImageProcessor("image.jpg")
print(image_processor.default_crop)
print("-----------------")
image_processor.default_crop(image_processor)
print("-----------------")
ImageProcessor.default_crop(image_processor)
# image_processor.small_crop()
# image_processor.large_crop()
运行效果:

相关:
https://baijiahao.baidu.com/s?id=1842253736230956282&wfr=spider&for=pc
本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址,还有个别文章是汇总网上多份资料所成,在这之中也必有疏漏未加标注处,如有侵权请与博主联系。
如果未特殊标注则为原创,遵循 CC 4.0 BY-SA 版权协议。
posted on 2025-12-13 16:55 Angry_Panda 阅读(3) 评论(0) 收藏 举报
浙公网安备 33010602011771号