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.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics