转载自
http://www.python8.org/a/fenleiwenzhang/yuyanjichu/2010/1001/566.html
Python中要创建一个类的实例,要首先导入该类或者该类所属的模块。
例如:
import mymodule
myobject = mymodule.myclass()
或者
from mymodule import myclass
myobject = myclass()
如果要在程序中动态地创建类实例,也一样要分两步走,例如:
m = __import__('mymodule')
c = getattr(m, 'myclass')
myobject = c()
但是要注意:如果myclass并不在mymodule的自动导出列表中(__all__),则必须显式地导入,例如:
m = __import__('mymodule', globals(), locals(), ['myclass'])
c = getattr(m, 'myclass')
myobject = c()
若要封装的规范一些,可以这样来做:
class Activator:
'''本类用来动态创建类的实例'''
@staticmethod
def createInstance(class_name, *args, **kwargs):
'''动态创建类的实例。
[Parameter]
class_name - 类的全名(包括模块名)
*args - 类构造器所需要的参数(list)
*kwargs - 类构造器所需要的参数(dict)
[Return]
动态创建的类的实例
[Example]
class_name = 'knightmade.logging.Logger'
logger = Activator.createInstance(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
分享到:
相关推荐
#### Python动态创建类实例的方法 Python提供了多种方式来实现动态创建类实例的功能,其中一种常见的方式是利用内置的`__import__`函数结合`getattr`方法。 #### 实现原理 1. **模块导入**:使用`__import__`函数...
在 Python 中,动态创建类是一种非常有用的技术,尤其当需要在运行时基于某些条件生成特定类时。本篇文章将深入探讨 Python 如何实现动态创建类的方法,包括其实现原理、具体的实现步骤以及相关的操作技巧。 #### ...
先获取类对象,然后用`PyObject_CallObject()`创建实例。例如: ```cpp PyObject* klass = PyObject_GetAttrString(module, "MyClass"); PyObject* instance = PyObject_CallObject(klass, NULL); Py_DECREF...
Python支持面向对象编程,包括类的定义、对象的创建、继承和多态等概念。虽然作为入门实例,但某些复杂点的脚本如`JCP067.py`可能涉及到这些内容。 10. **标准库与第三方库** Python拥有丰富的标准库和第三方库,...
Django的ORM允许我们将Python类映射到数据库中的表,类的实例则对应于表中的行。默认情况下,Django会根据模型类的名字来生成数据库表名,但可以通过`Meta`类中的`db_table`属性自定义表名。 在Django中动态创建...
在Python编程中,动态创建类是一项强大的特性,它允许我们在程序运行时根据需求构建新的类。`type`函数是实现这一功能的关键工具。本篇将深入探讨如何使用`type`来动态创建类,并通过实例来解析其工作原理、实现方法...
本文将深入探讨Python中如何创建和管理实例属性,以及它们在实际编程中的应用。 1. **类与实例** 在Python中,类是一种自定义数据类型,用于封装数据和方法。实例则是类的实体化,通过`__init__`方法初始化,可以...
本教程将详细解释如何在Python中定义类和创建实例。 首先,让我们来看如何定义一个类。在Python中,类是通过`class`关键字来创建的。类名通常遵循驼峰命名法,即首字母大写,例如`Person`。类定义的主体通常包含...
在本实例中,Vue被用来创建前端页面,你可以用Vue的模板语法编写HTML,同时利用其提供的状态管理和生命周期钩子,实现动态交互和数据管理。 在实践中,你可能会首先创建一个Vue项目,编写HTML、CSS和JavaScript代码...
首先要明白,python中的类可以动态的添加属性,实则在内存中有个__dict__方法维护了这种动态添加属性,它占有内存,把它关掉,不就达到省内存要求了? #!/usr/bin/python3 import time import sys class P
7. **面向对象编程**:掌握类的定义、对象的创建、继承、封装和多态等面向对象的基本概念,理解类方法、静态方法和实例方法的区别。 8. **异常处理**:理解`try/except/finally`结构,学会捕获和处理程序运行中的...
2. 动态创建类:通过元类,可以在运行时动态地创建类,这对于某些需要动态调整类结构的情况非常有用。 3. 注解和验证:元类可以用于检查类定义,确保它们符合特定的规范,或者为类添加元数据。 示例中提到了两种...
在本实例中,Flask用于构建一个简单的博文系统,实现用户登录、登出以及发布和查看博文的功能。 **二、SQLite3数据库** SQLite3是Python标准库中的一个嵌入式数据库,无需单独服务器进程,可以直接在应用程序中...
Python 实现最短路径的实例方法主要涉及到图论和算法,特别是解决网络中两点之间最高效、最低成本的路径问题。下面将详细讲解三种常用的算法:迪杰斯特拉算法(Dijkstra算法)、弗洛伊德算法(Floyd算法)以及SPFA...
在Python编程中,有时我们需要利用已有的C++库或者DLL(动态链接库)来扩展功能,这通常通过Python的`ctypes`模块实现。`ctypes`是Python的一个标准库,它允许我们直接调用C语言编译的动态链接库,从而实现了Python...
在IT行业中,动态链接库(DLL)是一种共享代码的方式,允许多个程序同时使用同一段代码,从而节省内存和提高效率。DLLs在Windows操作系统中尤为常见,C++是创建DLL的主要编程语言。本主题将深入探讨非MFC规则DLL、...
在本实例中,我们可能会看到如何导入requests库并构造请求,包括设置URL、参数、头信息等。 接下来,用例管理是测试过程中的关键部分。这里提到的是读取Excel文件来获取测试用例。Python提供了pandas库,它允许我们...
一旦引入了IronPython,你可以创建一个`ScriptEngine`实例来启动Python环境。例如: ```csharp using IronPython.Hosting; // 初始化Python解释器 var engine = Python.CreateEngine(); ``` 然后,你可以使用`...