python动态构建类(类似声明)

对于类实例的动态构建,那是非常的简单。可要在代码中动态的构建类,然后该类还能够被使用,那得多么的强大呀。

在Python中,内建的__builtin__提供了一个type的方法,用该方法可以动态的构建一个类,是不是太强大了!

构建方法

__builtin__.type(name, bases, dct)

name: 类名

bases: 一个tuple,父类(支持多重继承,所以用tuple)

dct:一个dict类型,用来作为类的初始化元素。

比方

class_a = __builtin__.type(‘a‘, (object,), {})

这时就创建了一个类a的类型。

用处:

在需要不同的派生类实现不同的功能,而这些功能又是在框架中实现的,这个时候就可能非常有用了。

另一个就是与其他的框架做一个代理类的功能,因为动态实现,所以使得代理变得非常简单。

于是乎,任何从type中继承的metaclass,也可以进行上面的方式来构建一个类。

时间: 2024-10-08 22:56:59

python动态构建类(类似声明)的相关文章

python动态创建类的声明

动态创建类的声明 使用内置函数type,原型:class type(name, bases, dict)name是类的名字,相当于__class__bases是类的基类,元组,可以有多个基类,但是基类必须直接或者间接继承自object类,否则会报错dict是类的变量,字典类型,相当于静态变量,与在__init__函数中声明的不同 代码示意片段: class A(object): def __init__(self): print "A init ..." class B(A): def

[python]动态创建类

本文主要说明如何使用type来创建类,并添加类属性.方法. type实则是python内建元类,用来创建 类,当我们用class 定义一个类时,python后台是在用type创建该类. 了解type的两种用法 class type(object) | type(object) -> the object's type | type(name, bases, dict) -> a new type 创建A类,具有A.addr属性 >>> A = type('A', (), {'

Python中动态创建类实例

Python中动态创建类实例 简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模块.如下: def createInstance(module_name, class_name, *args, **kwargs): module_meta = __import__(module_name, globals(), locals(), [class_n

使用C语言为python编写动态模块(3)--在C中实现python中的类

楔子 这次我们来介绍python中的类型在C中是如何实现的,我们在C中创建python的int对象,可以使用PyLong_FromLong.创建python的list对象可以使用PyList_New,那么如何在C中构建一个python中的类呢? 对于构建一个类,我们肯定需要以下步骤: 创建一个类扩展 添加类的参数 添加类的方法 添加类的属性,比如可以设置.获取属性 添加类的继承 解决类的循环引用导致的内存泄露问题和自定义垃圾回收 前面几个步骤是必须的,但是容易把最后一个问题给忽略掉.我们在pyt

构建施耐德楼控系统数据库后台服务器示例工程五(JAVA动态生成类)

在做数据库简易工具的过程中遇到了这么一个问题,即程序部署在tomcat下启动运行后,我们无法事先定义数据库中后续创建的表结构的Hibernate Bean对象,这样就需要我们在服务器运行起来后动态创建bean对象.cglib这个开源库即可解决我们的问题,动态创建JAVA对象. 1.cglib开源库简介 CGLIB(Code Generation Library)是一个开源项目,是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口. 反编译后CGLIB结构

在python里如何动态添加类的动态属性呢?

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

C# 类如何声明索引器以提供对类的类似数组的访问的代码

研发期间,将内容过程中比较常用的内容段做个收藏,如下内容内容是关于 C# 类如何声明索引器以提供对类的类似数组的访问.的内容,希望能对各位有用处. using System;using System.IO; public class FileByteArray{ public FileByteArray(string fileName) { stream = new FileStream(fileName, FileMode.Open); } public void Close() { stre

学习日志---python(新式类,面向对象)

类型与类: 使用新式类,class a(object) 这样a就可以是type类型了,新式类 python使用__new__来构造对象,使用__init__来初始化对象,这两个是分开的,在new出的同时可以调用init方法来初始化,可以带参数:类中的每个函数(方法)都要加上self,表示为实例上的方法.self代表这个类的实例. 实例变量:是针对每个实例的变量,每个实例的变量是不同的: 类变量:是针对类的,类中的这个变量都一样: class A(object):     #这个是类变量     

C++动态创建类的实例

写在前面:首先声明,C++实际上是不可以动态创建类的实例的. 下面简单做一个解释,所谓动态创建类的实例是指在程序运行过程中创建并使用一个“未知”的类.而“未知”是指在程序编译时并不知道有哪些类是需要动态创建的.对于C++这门语言来说,编译时不知道的类是不可以在运行时使用的.所以我说C++是不可以的. 不过C++可以做到另一件事情,基本可以满足大多数类似的需求. 我描述为通过类名称创建类的实例. 进入正题. 首先描述一下需求: 编写一个程序实现在程序运行过程中通过类名称(即字符串变量)创建该类的实