在Python中动态创建类
一个类定义了一组实例变量和方法来指定一个对象类型。一个类可用于根据需要创建尽可能多的对象类型的对象实例。对象是具有特定属性(数据成员)和行为(成员函数)的已识别实体。具有相似特征和行为的一组对象是同一类的实例。
Python是一种动态编程语言,由于其灵活性, Python与静态类型语言相比具有显着优势。 Python代码可以动态导入,类可以在运行时动态创建。
可以使用Python中的type()
函数动态创建类。 type()
函数用于返回对象的类型。
句法:
type(object)
上面的语法返回对象的类型。
例子:
# program to illustrate the use of type()
print(type("Geeks4Geeks !"))
print(type(1706256))
输出:
class 'str'
class 'int'
在Python中创建动态类
可以使用以下语法动态创建类:
句法:
type(name, bases, attributes)
Parameters:
name: The user defined name of the class
bases: A list of base classes, and its type is tuple
attributes: the data members and methods contained in the class
上面的语法返回一个新类型的对象。
例子:
# program to create class dynamically
# constructor
def constructor(self, arg):
self.constructor_arg = arg
# method
def displayMethod(self, arg):
print(arg)
# class method
@classmethod
def classMethod(cls, arg):
print(arg)
# creating class dynamically
Geeks = type("Geeks", (object, ), {
# constructor
"__init__": constructor,
# data members
"string_attribute": "Geeks 4 geeks !",
"int_attribute": 1706256,
# member functions
"func_arg": displayMethod,
"class_func": classMethod
})
# creating objects
obj = Geeks("constructor argument")
print(obj.constructor_arg)
print(obj.string_attribute)
print(obj.int_attribute)
obj.func_arg("Geeks for Geeks")
Geeks.class_func("Class Dynamically Created !")
输出:
constructor argument
Geeks 4 geeks!
1706256
Geeks for GeeksClass Dynamically Created!
在上面的程序中, Geeks
类是动态创建的,它有一个构造函数。 Geeks
的数据成员是string_attribute
和int_attribute
, Geeks
的成员函数是displayMethod()
和classMethod()
。创建一个Geeks
类的对象obj
并分配和显示所有数据成员,同时调用Geeks
的所有成员函数。