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'>