中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Python使用內置函數type創建新類型

發布時間:2020-10-26 16:15:51 來源:億速云 閱讀:157 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關Python使用內置函數type創建新類型,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

英文文檔:

class type(object)

class type(name, bases, dict)

With one argument, return the type of an object. The return value is a type object and generally the same object as returned by object.__class__.

The isinstance() built-in function is recommended for testing the type of an object, because it takes subclasses into account.

With three arguments, return a new type object. This is essentially a dynamic form of the class statement. The namestring is the class name and becomes the __name__ attribute; the bases tuple itemizes the base classes and becomes the __bases__ attribute; and the dict dictionary is the namespace containing definitions for class body and is copied to a standard dictionary to become the __dict__ attribute.

  返回對象的類型,或者根據傳入的參數創建一個新的類型

說明:

  1. 函數只傳入一個參數時,返回參數對象的類型。 返回值是一個類型對象,通常與對象.__ class__返回的對象相同。

#定義類型A
>>> class A:
  name = 'defined in A'

#創建類型A實例a
>>> a = A()

#a.__class__屬性
>>> a.__class__
<class '__main__.A'>

#type(a)返回a的類型
>>> type(a)
<class '__main__.A'>

#測試類型
>>> type(a) == A
True

 2. 雖然可以通過type函數來檢測一個對象是否是某個類型的實例,但是更推薦使用isinstance函數,因為isinstance函數考慮了父類子類間繼承關系。

#定義類型B,繼承A
>>> class B(A):
  age = 2

#創建類型B的實例b
>>> b = B()

#使用type函數測試b是否是類型A,返回False
>>> type(b) == A
False

#使用isinstance函數測試b是否類型A,返回True
>>> isinstance(b,A)
True

 3. 函數另一種使用方式是傳入3個參數,函數將使用3個參數來創建一個新的類型。其中第一個參數name將用作新的類型的類名稱,即類型的__name__屬性;第二個參數是一個元組類型,其元素的類型均為類類型,將用作新創建類型的基類,即類型的__bases__屬性;第三個參數dict是一個字典,包含了新創建類的主體定義,即其值將復制到類型的__dict__屬性中。

#定義類型A,含有屬性InfoA
>>> class A(object):
  InfoA = 'some thing defined in A'

#定義類型B,含有屬性InfoB
>>> class B(object):
  InfoB = 'some thing defined in B'

#定義類型C,含有屬性InfoC
>>> class C(A,B):
  InfoC = 'some thing defined in C'

#使用type函數創建類型D,含有屬性InfoD
>>> D = type('D',(A,B),dict(InfoD='some thing defined in D'))

#C、D的類型
>>> C
<class '__main__.C'>
>>> D
<class '__main__.D'>

#分別創建類型C、類型D的實例
>>> c = C()
>>> d = D()

#分別輸出實例c、實例b的屬性
>>> (c.InfoA,c.InfoB,c.InfoC)
('some thing defined in A', 'some thing defined in B', 'some thing defined in C')
>>> (d.InfoA,d.InfoB,d.InfoD)
('some thing defined in A', 'some thing defined in B', 'some thing defined in D')

關于Python使用內置函數type創建新類型就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

镇远县| 南汇区| 双流县| 化隆| 农安县| 辉南县| 宁陕县| 常宁市| 四平市| 三台县| 辛集市| 长宁区| 元朗区| 凤台县| 习水县| 广宗县| 怀宁县| 罗山县| 巩义市| 连江县| 安丘市| 西贡区| 扎囊县| 江川县| 惠州市| 南昌县| 博客| 西充县| 蓬安县| 泰州市| 马边| 方城县| 永和县| 万宁市| 北安市| 南华县| 济阳县| 中阳县| 阳谷县| 罗平县| 万荣县|