Python functools.partialmethod Function

The functools.partialmethod function in Python's functools module allows you to fix a certain number of arguments of a method and generate a new method. This is useful for creating methods with some preset arguments, particularly in object-oriented programming.

Table of Contents

  1. Introduction
  2. functools.partialmethod Function Syntax
  3. Examples
    • Basic Usage
    • Using with Positional Arguments
    • Using with Keyword Arguments
    • Combining with Other Methods
  4. Real-World Use Case
  5. Conclusion

Introduction

The functools.partialmethod function helps in creating new methods with some of the arguments of the original method fixed. This is particularly useful in classes where you need to repeatedly call a method with some common arguments.

functools.partialmethod Function Syntax

Here is how you use the functools.partialmethod function:

import functools

class MyClass:
    def method(self, /, *args, **keywords):
        # Method implementation
        pass

    new_method = functools.partialmethod(method, /, *args, **keywords)

Parameters:

  • method: The original method you want to partially apply arguments to.
  • *args: The positional arguments to be fixed.
  • **keywords: The keyword arguments to be fixed.

Returns:

  • A new method with some arguments of the original method fixed.

Examples

Basic Usage

Fix a few arguments of a simple method in a class.

Example

import functools

class Calculator:
    def multiply(self, x, y):
        return x * y

    double = functools.partialmethod(multiply, 2)

calc = Calculator()
print(calc.double(5))  # Output: 10
print(calc.double(10)) # Output: 20

Using with Positional Arguments

Fix the first argument of a method.

Example

import functools

class Adder:
    def add(self, a, b, c):
        return a + b + c

    add_ten = functools.partialmethod(add, 10)

adder = Adder()
print(adder.add_ten(20, 30))  # Output: 60
print(adder.add_ten(5, 15))   # Output: 30

Using with Keyword Arguments

Fix keyword arguments of a method.

Example

import functools

class Greeter:
    def greet(self, greeting, name):
        return f"{greeting}, {name}!"

    say_hello = functools.partialmethod(greet, greeting="Hello")

greeter = Greeter()
print(greeter.say_hello("Alice"))  # Output: Hello, Alice!
print(greeter.say_hello("Bob"))    # Output: Hello, Bob!

Combining with Other Methods

Use partialmethod to fix arguments in combination with other methods.

Example

import functools

class Power:
    def power(self, base, exponent):
        return base ** exponent

    square = functools.partialmethod(power, exponent=2)

power = Power()
print(power.square(4))  # Output: 16
print(power.square(5))  # Output: 25

Real-World Use Case

Configuring Logger

Configure a logger with a fixed format.

Example

import functools
import logging

class LoggerFactory:
    def configure_logger(self, name, level, format):
        logger = logging.getLogger(name)
        handler = logging.StreamHandler()
        formatter = logging.Formatter(format)
        handler.setFormatter(formatter)
        logger.addHandler(handler)
        logger.setLevel(level)
        return logger

    info_logger = functools.partialmethod(configure_logger, level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

factory = LoggerFactory()
logger = factory.info_logger('my_logger')
logger.info('This is an info message')

Conclusion

The functools.partialmethod function is used for creating specialized versions of methods by fixing some of their arguments. It enhances code reusability and readability, especially in classes where methods may require certain arguments to be fixed across multiple calls. Proper usage can lead to more concise and maintainable code in object-oriented programming.

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare