python动态创建类的声明


  1. 动态创建类的声明

    使用内置函数type,原型:class type(name, bases, dict)
    name是类的名字,相当于__class__
    bases是类的基类,元组,可以有多个基类,但是基类必须直接或者间接继承自object类,否则会报错
    dict是类的变量,字典类型,相当于静态变量,与在__init__函数中声明的不同

  2. 代码示意片段:
    class A(object):
      def __init__(self):
          print "A init ..."
    
    class B(A):
        def __init__(self):
            print "B init ..."
    
    inst = B()
    print inst.__class__
    print B.__bases__
    print "B =",hex(id(B))
    Q = type("Q",(B,),{})
    print "Q =",hex(id(Q))
    
时间: 2024-12-19 18:52:32

python动态创建类的声明的相关文章

[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++动态创建类的实例

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

python——type()创建类

今天我算是长知识了,我是一个python菜鸟,以前一直认为type(A)可以返回A的类型,但是不知道type还可以用于创建class,这篇经验就是介绍一下如何用type()创建一个类,以及如何设置该类的属性. 我们使用type创建一个空类:只有一个名字,其他什么都没有,它的参数格式是:type(class_name,bases,dic) 我们用type来查看一下我们创建的cls的类型: 查看cls的名称 假如我们用比较熟悉的继承的方式来创建一个类,它跟cls是一样的: 当然,我们可以通过参数di

Python 动态创建函数【转】

知乎上也有相似的问题 偶然碰到一个问题,初想是通过动态创建Python函数的方式来解决,于是调研了动态创建Python函数的方法. 定义lambda函数 在Python中定义lambda函数的写法很简单, func = lambda: "foobar" 可以认为lambda函数是最常用的一种方式. 定义局部函数 Python中函数可以在代码块中进行定义,比如decorator就是通过这种方式实现的, def decorator(func): def _(*args, **kwargs)

设计模式之工厂模式:模拟DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC动态创建类对象

该形式的工厂模式是我项目中用到的方法,属于很成熟的模版,读者可以直接拿来在自己项目中使用.个人感觉这种方法真正做到了"开放封闭"的原则,最大好处是用户产品类的设计完全不依赖于该模式的实现,比如提供必须的相关函数等.如果不理解工厂模式的话,请参考网上其它文章,本实现在理解上有一点小小的难度.好东西,大家慢慢享用,话不多说,先放代码! 首先是产品基类,它相当于一个接口,产品需要有什么动作就写在这里吧! #ifndef _CPRODUCTBASE_H_ #define _CPRODUCTBA

通过字符串动态创建类对象

功能的需求是  不需要使用IOC 框架 来对创建指定对象. .NET 中  要想动态的 创建对象   做耦合  好像只能做到 将类生成DLL 后  然后 加载DLL 接着创建对象. JAVA 当个类文件 就可以运行. 希望做到  当读一个   .class  或者 .TXT 就可以  动态创建类对象  那多好啊!!! 还可以将 类文件 以字符串的形式写到 数据库中  通过数据库来 创建类对象. 然后就各种百度 谷歌 贴吧等  找有没相关的 解决方案    还好  找到了  . 不藏着 分享出来

type动态创建类

在一些特定场合,需要动态创建类,比如创建表单,就会用到type动态创建类,举个例子: 1 class Person(object): 2 3 def __init__(self,name,age): 4 self.name = name 5 self.age = age 6 7 8 p = Person("aiden",22) 9 print(type(p)) 10 print(type(Person)) 11 12 13 14 def __init__(self,name,age):

python进阶三(面向对象编程基础)【3-1 python中创建类属型】

python中创建类属性 类是模板,而实例则是根据类创建的对象. 绑定在一个实例上的属性不会影响其他实例,但是,类本身也是一个对象,如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份. 定义类属性可以直接在 class 中定义: 1 class Person(object): 2 address = 'Earth' 3 def __init__(self, name): 4 self.na