使用type動態建立類
動態語言和靜態語言最大的不同,就是函式和類的定義,不是編譯時定義的,而是執行時動態建立的。
下面看乙個例子:
# 定義乙個person類
class person(object):
def __init__(self):
pass
def say(self):
print('say hello')
p = person()
p.say() # 輸出 say hello
print(type(p)) # 輸出
print(type(person)) # 輸出
執行結果:
say hello
我們發現,type(person)輸出的是是type型別。
type()函式可以檢視一程式設計客棧個型別或變數的型別,person是乙個class(類),它的型別是type,而p是乙個 person的例項,它的型別是person類。
我們說class(類)的定義是執行時動態建立的,而建立class(類)的方法就是使用type()函式。
eg:# 定義乙個方法
def func(self, word='hello'):
print('say %s' % word)
person = type('person', (object,), dict(say=func)) uhnmwjjpx# 通過type建立person類
p = person()
p.say() # 輸出 say hello
print(type(p)) # 輸出
print(type(person)) # 輸出 uhnmwjjpx'type'>
執行結果:
say hello
www.cppcns.comype'>
type函式動態建立類,需要傳入3個引數,分別是:
通過type()函式建立的類和直接寫class是完全一樣的,因為python直譯器遇到class定義時,僅僅是掃瞄一下class定義的語法,然後呼叫type()函式建立出class。
Python 使用 type 動態建立類的方法
在 python 中可以定義如下的乙個靜態類 class person def init self,name,age self.name name self.age age defwho self print f 我叫,今年歲了 print type person 執行結果 class type 我...
Python中type()詳解 動態建立類
眾所周知 type 函式可以檢視變數的型別 先看乙個簡單的列子來看一下type檢視變數型別 class animal pass a animal print type a print type animal 可以發現我定義的animal類本身的型別是 type 從 python 直譯器的角度來看,當...
Python中type()詳解 動態建立類
眾所周知 type 函式可以檢視變數的型別 先看乙個簡單的列子來看一下type檢視變數型別 class animal pass a animal print type a print type animal class main animal class type 可以發現我定義的animal類本身...