📌  相关文章
📜  在Python中动态创建类

📅  最后修改于: 2022-05-13 01:55:03.542000             🧑  作者: Mango

在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_attributeint_attributeGeeks的成员函数是displayMethod()classMethod() 。创建一个Geeks类的对象obj并分配和显示所有数据成员,同时调用Geeks的所有成员函数。