w3resource

Python Dynamic Class Inheritance: Expand with Subclass

Python Metaprogramming: Exercise-8 with Solution

Dynamic Class Inheritance:

Write a Python function "create_inherited_class" that takes a base class, a class name, and a dictionary of additional attributes and methods, and returns a dynamically created subclass.

Sample Solution:

Python Code :

# Function to create a subclass dynamically
def create_inherited_class(base_class, name, attrs):
    # Create a new class that inherits from base_class with additional attributes and methods
    return type(name, (base_class,), attrs)

# Define a base class
class BaseClass:
    # Method to be inherited by subclasses
    def base_method(self):
        return "Base method"

# Define additional attributes and methods for the subclass
additional_attrs = {
    # Add a new method to the subclass
    'additional_method': lambda self: "Additional method"
}

# Create a subclass dynamically using the base class and additional attributes
DynamicSubclass = create_inherited_class(BaseClass, 'DynamicSubclass', additional_attrs)

# Test the dynamic subclass
# Create an instance of the dynamically created subclass
instance = DynamicSubclass()
# Call the inherited method from the base class
print(instance.base_method())       # Output: "Base method"
# Call the newly added method in the subclass
print(instance.additional_method())  # Output: "Additional method"

Output:

Base method
Additional method

Explanation:

  • Function Definition:
    • 'create_inherited_class' takes 'base_class' (the class to inherit from), name (the name of the new subclass), and 'attrs' (a dictionary of additional attributes and methods).
  • Create Subclass:
    • The "type" function is used to create a new class that inherits from 'base_class' and includes the attributes and methods defined in 'attrs'.
  • Base Class Definition:
    • "BaseClass" is defined with a method 'base_method' that returns "Base method".
  • Additional Attributes and Methods:
    • 'additional_attrs' is a dictionary containing an additional method 'additional_method' that returns "Additional method".
  • Create Subclass:
    • 'DynamicSubclass' is created dynamically by calling 'create_inherited_class' with 'BaseClass', the name 'DynamicSubclass', and the additional attributes.
  • Testing:
    • An instance of 'DynamicSubclass' is created.
    • The 'base_method' inherited from 'BaseClass' is called, returning "Base method".
    • The 'additional_method' added to 'DynamicSubclass' is called, returning "Additional method".

Python Code Editor :

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Python Dynamic Class Creation: Flexible Method Inclusion.
Next: Python Code Generation: Transform Templates.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/python-exercises/metaprogramming/python-metaprogramming-exercise-8.php