Python中type的用法
阿新 • • 發佈:2018-11-11
目錄
描述
python的 type
函式有兩個用法,當只有一個引數的時候,返回物件的型別。當有三個引數的時候返回一個類物件。
語法
type(object)
type(name, bases, dict)
用法
一個引數
type(object)
返回一個物件的型別,如:
In [1]: a = 10
In [2]: type(a)
Out[2]: int
三個引數
tpye(name, bases, dict)
- name 類名
- bases 父類的元組
- dict 類的屬性方法和值組成的鍵值對
返回一個類物件:
# 例項方法 def instancetest(self): print("this is a instance method") # 類方法 @classmethod def classtest(cls): print("this is a class method") # 靜態方法 @staticmethod def statictest(): print("this is a static method") # 建立類 test_property = {"name": "tom", "instancetest": instancetest, "classtest": classtest, "statictest": statictest} Test = type("Test", (), test_property) # 建立物件 test = Test() # 呼叫方法 print(test.name) test.instancetest() test.classtest() test.statictest()
執行結果:
tom
this is a instance method
this is a class method
this is a static method
使用help列印Test的詳細資訊:
class Test(builtins.object) | Methods defined here: | | instancetest(self) | # 例項方法 | | ---------------------------------------------------------------------- | Class methods defined here: | | classtest() from builtins.type | # 類方法 | | ---------------------------------------------------------------------- | Static methods defined here: | | statictest() | # 靜態方法 | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | name = 'tom'
可以看出我們建立了一個Test類,包含一個例項方法statictest,類方法classtest,靜態方法statictest,和一個屬性name = 'tom'。
type和isinstance
type不會認為子類是父類的型別,不會考慮繼承關係。isinstance會任務子類是父類的型別,考慮繼承關係。
Type和Object
type為物件的頂點,所有物件都建立自type。
object為類繼承的頂點,所有類都繼承自object。
python中萬物皆物件,一個python物件可能擁有兩個屬性,__class__
和 __base__
,__class__
表示這個物件是誰建立的,__base__
表示一個類的父類是誰。
In [1]: object.__class__
Out[1]: type
In [2]: type.__base__
Out[2]: object
可以得出結論:
- type類繼承自object
- object的物件建立自type