Python使用type動態(tài)創(chuàng)建類操作示例
本文實例講述了Python使用type動態(tài)創(chuàng)建類操作。分享給大家供大家參考,具體如下:
使用type動態(tài)創(chuàng)建類
動態(tài)語言和靜態(tài)語言最大的不同,就是函數(shù)和類的定義,不是編譯時定義的,而是運行時動態(tài)創(chuàng)建的。
下面看一個例子:
# 定義一個Person類
class Person(object):
def __init__(self):
pass
def say(self):
print('say hello')
p = Person()
p.say() # 輸出 say hello
print(type(p)) # 輸出 <class '__main__.Person'>
print(type(Person)) # 輸出 <class 'type'>
運行結果:
say hello
<class '__main__.Person'>
<class 'type'>
我們發(fā)現(xiàn),type(Person)輸出的是<class 'type'>是type類型。
type()函數(shù)可以查看一個類型或變量的類型,Person是一個class(類),它的類型是type,而p是一個 Person的實例,它的類型是Person類。
我們說class(類)的定義是運行時動態(tài)創(chuàng)建的,而創(chuàng)建class(類)的方法就是使用type()函數(shù)。
eg:
# 定義一個方法
def func(self, word='hello'):
print('say %s' % word)
Person = type('Person', (object,), dict(say=func)) # 通過type創(chuàng)建Person類
p = Person()
p.say() # 輸出 say hello
print(type(p)) # 輸出 <class '__main__.Person'>
print(type(Person)) # 輸出 <class 'type'>
運行結果:
say hello
<class '__main__.Person'>
<class 'type'>
type函數(shù)動態(tài)創(chuàng)建類,需要傳入3個參數(shù),分別是:
- 第一個參數(shù):class的名稱
- 第二個參數(shù):繼承的父類集合,注意Python支持多重繼承,如果只有一個父類,別忘了tuple的單元素寫法(tuple單元素寫法
(obj,)); - 第三個參數(shù):class的方法名稱與函數(shù)綁定,這里我們把函數(shù)func綁定到方法名say上。
通過type()函數(shù)創(chuàng)建的類和直接寫class是完全一樣的,因為Python解釋器遇到class定義時,僅僅是掃描一下class定義的語法,然后調用type()函數(shù)創(chuàng)建出class。
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python面向對象程序設計入門與進階教程》、《Python數(shù)據(jù)結構與算法教程》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
相關文章
python通過裝飾器檢查函數(shù)參數(shù)數(shù)據(jù)類型的方法
這篇文章主要介紹了python通過裝飾器檢查函數(shù)參數(shù)數(shù)據(jù)類型的方法,涉及Python裝飾器的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
python實現(xiàn)自動登錄人人網并訪問最近來訪者實例
這篇文章主要介紹了python實現(xiàn)自動登錄人人網并訪問最近來訪者實例,該實例是在前面登錄人人網實例基礎上的擴展,是非常實用的一個技巧,需要的朋友可以參考下2014-09-09
tensorflow saver 保存和恢復指定 tensor的實例講解
今天小編就為大家分享一篇tensorflow saver 保存和恢復指定 tensor的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07

