Python使用type動(dòng)態(tài)創(chuàng)建類操作示例
本文實(shí)例講述了Python使用type動(dòng)態(tài)創(chuàng)建類操作。分享給大家供大家參考,具體如下:
使用type動(dòng)態(tài)創(chuàng)建類
動(dòng)態(tài)語(yǔ)言和靜態(tài)語(yǔ)言最大的不同,就是函數(shù)和類的定義,不是編譯時(shí)定義的,而是運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建的。
下面看一個(gè)例子:
# 定義一個(gè)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'>
運(yùn)行結(jié)果:
say hello
<class '__main__.Person'>
<class 'type'>
我們發(fā)現(xiàn),type(Person)
輸出的是<class 'type'>
是type類型。
type()
函數(shù)可以查看一個(gè)類型或變量的類型,Person是一個(gè)class(類),它的類型是type,而p是一個(gè) Person的實(shí)例,它的類型是Person類。
我們說(shuō)class(類)的定義是運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建的,而創(chuàng)建class(類)的方法就是使用type()
函數(shù)。
eg:
# 定義一個(gè)方法 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'>
運(yùn)行結(jié)果:
say hello
<class '__main__.Person'>
<class 'type'>
type函數(shù)動(dòng)態(tài)創(chuàng)建類,需要傳入3個(gè)參數(shù),分別是:
- 第一個(gè)參數(shù):class的名稱
- 第二個(gè)參數(shù):繼承的父類集合,注意Python支持多重繼承,如果只有一個(gè)父類,別忘了tuple的單元素寫法(tuple單元素寫法
(obj,)
); - 第三個(gè)參數(shù):class的方法名稱與函數(shù)綁定,這里我們把函數(shù)func綁定到方法名say上。
通過type()
函數(shù)創(chuàng)建的類和直接寫class是完全一樣的,因?yàn)镻ython解釋器遇到class定義時(shí),僅僅是掃描一下class定義的語(yǔ)法,然后調(diào)用type()函數(shù)創(chuàng)建出class。
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python中常見的KeyError報(bào)錯(cuò)分析
在Python編程中,KeyError是一種非常常見的異常,它通常發(fā)生在嘗試訪問字典中不存在的鍵時(shí),本文將深入探討KeyError的報(bào)錯(cuò)原因、解決辦法,并通過代碼示例來(lái)演示如何避免這一錯(cuò)誤,需要的朋友可以參考下2024-07-07python通過裝飾器檢查函數(shù)參數(shù)數(shù)據(jù)類型的方法
這篇文章主要介紹了python通過裝飾器檢查函數(shù)參數(shù)數(shù)據(jù)類型的方法,涉及Python裝飾器的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03python爬蟲將js轉(zhuǎn)化成json實(shí)現(xiàn)示例
這篇文章主要為大家介紹了python爬蟲將js轉(zhuǎn)化成json實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05python實(shí)現(xiàn)自動(dòng)登錄人人網(wǎng)并訪問最近來(lái)訪者實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)自動(dòng)登錄人人網(wǎng)并訪問最近來(lái)訪者實(shí)例,該實(shí)例是在前面登錄人人網(wǎng)實(shí)例基礎(chǔ)上的擴(kuò)展,是非常實(shí)用的一個(gè)技巧,需要的朋友可以參考下2014-09-09Python對(duì)切片命名的實(shí)現(xiàn)方法
在本篇文章里我們給大家分享了關(guān)于Python對(duì)切片命名的實(shí)現(xiàn)方法的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們學(xué)習(xí)下。2018-10-10tensorflow saver 保存和恢復(fù)指定 tensor的實(shí)例講解
今天小編就為大家分享一篇tensorflow saver 保存和恢復(fù)指定 tensor的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-07-07