91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python使用type動態創建類操作示例

發布時間:2020-08-20 00:06:00 來源:腳本之家 閱讀:135 作者:張行之 欄目:開發技術

本文實例講述了Python使用type動態創建類操作。分享給大家供大家參考,具體如下:

使用type動態創建類
動態語言和靜態語言最大的不同,就是函數和類的定義,不是編譯時定義的,而是運行時動態創建的。

下面看一個例子:

# 定義一個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'>

我們發現,type(Person)輸出的是<class 'type'>是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))   # 通過type創建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函數動態創建類,需要傳入3個參數,分別是:

  • 第一個參數:class的名稱
  • 第二個參數:繼承的父類集合,注意Python支持多重繼承,如果只有一個父類,別忘了tuple的單元素寫法(tuple單元素寫法(obj,));
  • 第三個參數:class的方法名稱與函數綁定,這里我們把函數func綁定到方法名say上。

通過type()函數創建的類和直接寫class是完全一樣的,因為Python解釋器遇到class定義時,僅僅是掃描一下class定義的語法,然后調用type()函數創建出class。

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python面向對象程序設計入門與進階教程》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灵山县| 思茅市| 丽江市| 杭州市| 尼勒克县| 南汇区| 台州市| 汤阴县| 浮梁县| 泰来县| 忻州市| 天水市| 桦南县| 斗六市| 唐河县| 白山市| 松潘县| 东明县| 平利县| 广宗县| 湖北省| 加查县| 宁蒗| 文成县| 高青县| 玛纳斯县| 双城市| 莱州市| 东安县| 开远市| 凯里市| 南部县| 浠水县| 西乌珠穆沁旗| 龙游县| 临泉县| 游戏| 台东市| 浦北县| 繁昌县| 和静县|