類的動態建立

type()函數既能夠返回一個對象的類型,又能夠建立出新的類型
經過type()函數建立的類和直接寫class是徹底同樣的,由於Python解釋器遇到class定義時,僅僅是掃描一下class定義的語法,而後調用type()函數建立出class
正常狀況下,咱們都用class Xxx...來定義類,但type()函數也容許動態建立出類來函數

 

  查看數據類型spa

  type()函數能夠查看一個類型或變量的類型code

     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的方法名稱與函數綁定blog

        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'>
相關文章
相關標籤/搜索