w3resource

Python Dynamic Class Creation: Flexibility Unleashed

Python Metaprogramming: Exercise-5 with Solution

Creating Classes Dynamically:

Write a Python function “create_class” that takes a class name and a dictionary of attributes and methods, and returns a dynamically created class with those attributes and methods.

Sample Solution:

Python Code :

# Function to create a class dynamically with specified attributes and methods
def create_class(name, attrs):
    # Use the type function to create a new class with the given name, inheriting from object, and using the specified attributes and methods
    return type(name, (object,), attrs)

# Define attributes and methods for the dynamic class
attrs = {
    # Add a method 'greet' that returns a greeting string
    'greet': lambda self: "Hello, Sonia Toutatis!",
    # Add an attribute 'age' with value 25
    'age': 25
}

# Create a class dynamically using the defined attributes and methods
MyDynamicClass = create_class('MyDynamicClass', attrs)

# Test the dynamic class
# Create an instance of the dynamically created class
instance = MyDynamicClass()
# Call the 'greet' method of the instance
print(instance.greet())  # Output: "Hello, Sonia Toutatis!"
# Access the 'age' attribute of the instance
print(instance.age)  # Output: 25 

Output:

Hello, Sonia Toutatis!
25

Explanation:

  • Function Definition:
    • "create_class" takes 'name' (the name of the class) and 'attrs' (a dictionary of attributes and methods).
  • Create Class:
    • The "type" function is used to create a new class with the given 'name', inheriting from 'object', and using the specified 'attrs'.
  • Attributes and Methods Definition:
    • attrs is a dictionary containing:
      • greet: A method that returns the string "Hello, Sonia Toutatis!".
      • age: An attribute with the value 25.
  • Create Dynamic Class:
    • "MyDynamicClass" is created dynamically by calling 'create_class' with the class name and attributes.
  • Testing:
    • An instance of 'MyDynamicClass' is created.
    • The "greet" method of the instance is called, returning "Hello, Sonia Toutatis!".
    • The 'age' attribute of the instance is accessed, returning 25.

Python Code Editor :

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

Previous: Python Attribute Logging Metaclass: Monitor Accesses.
Next: Python Dynamic Method Addition: Expand Class Behavior.

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-5.php