zoukankan      html  css  js  c++  java
  • 类的动态创建

    type()函数既可以返回一个对象的类型,又可以创建出新的类型
    通过type()函数创建的类和直接写class是完全一样的,因为Python解释器遇到class定义时,仅仅是扫描一下class定义的语法,然后调用type()函数创建出class
    正常情况下,我们都用class Xxx...来定义类,但type()函数也允许动态创建出类来

      查看数据类型

      type()函数可以查看一个类型或变量的类型

         class Hello(object):  #定义一个hello.py文件,并定义一个Hello class
              def hello(self, name='world'):
                  print('Hello, %s.' % name)
            
            
          from hello import Hello
          h = Hello()
          h.hello()    #输出:Hello, world.
          print(type(Hello))    #输出:<class 'type'>,Hello是一个class,它的类型就是type
          print(type(h))    #输出:<class 'hello.Hello'>,h是一个实例,它的类型就是class Hello

      

      动态创建类

      type()函数也可以创建出新的类型
      比如,可以通过type()函数创建出类,而无需通过class 类名(object)...的定义

      通过type()函数创建类,需依次传入3个参数:
        1) class的名称;
        2) 继承的父类集合,注意Python支持多重继承,如果只有一个父类,别忘了tuple的单元素写法;
        3) class的方法名称与函数绑定

            def fn(self, name='world'): # 先定义函数
                print('Hello, %s.' % name)
                
            Hello = type('Hello', (object,), dict(hello=fn)) # 创建Hello类,父类是object,创建类方法hello并绑定的是fn
            h = Hello()
            h.hello()    #输出:Hello, world
            print(type(Hello))    #输出:<class 'type'>
            print(type(h))    #输出:<class '__main__.Hello'>
  • 相关阅读:
    mysql一个字段多个值如何分别取出这些值
    mysql json数组取值、查询
    mui删除元素
    软件测试的艺术(读书笔记1)
    爬虫(3)_网站分析
    谈谈作为测试的8年
    测试有前景吗?
    爬虫(二)-创建项目&应用
    爬虫(一)-环境搭建
    puppeteer UI自动化测试demo(一)
  • 原文地址:https://www.cnblogs.com/shiliye/p/10984691.html
Copyright © 2011-2022 走看看