SoFunction
Updated on 2024-11-16

Dynamically created class example code

Example:
import mymodule
myobject = ()
or
from mymodule import myclass
myobject = myclass()

If you want to create class instances dynamically in your program, it's just as much a two-step process, for example:
m = __import__('mymodule')
c = getattr(m, 'myclass')
myobject = c()

But be careful: if myclass is not in mymodule's auto-export list (__all__), it must be imported explicitly, for example:
m = __import__('mymodule', globals(), locals(), ['myclass'])
c = getattr(m, 'myclass')
myobject = c()

For a more standardized encapsulation, you can do this:
Code
Copy Code The code is as follows.

class Activator:
'''This class is used to dynamically create instances of a class'''
@staticmethod
def createInstance(class_name, *args, **kwargs):
'''Dynamically create instances of classes.'''
[Parameter]
class_name - full name of the class (including module name)
*args - arguments required by the class constructor (list)
*kwargs - arguments required by class constructors (dict)
[Return]
Instances of dynamically created classes
[Example]
class_name = ''
logger = (class_name, 'logname')
'''
(module_name, class_name) = class_name.rsplit('.', 1)
module_meta = __import__(module_name, globals(), locals(), [class_name])
class_meta = getattr(module_meta, class_name)
object = class_meta(*args, **kwargs)
return object