https://docs.python.org/3/library/functions.html#type
1.type(object)
class type(object)
返回一個對象的類型,等價於object.__class__
The isinstance() built-in function is recommended for testing the type of an object, because it takes subclasses into account.
type和isinstance
type不會認爲子類是父類的類型,不會考慮繼承關係。isinstance會任務子類是父類的類型,考慮繼承關係。
type爲對象的頂點,所有對象都創建自type。
object爲類繼承的頂點,所有類都繼承自object。
python中萬物皆對象,一個python對象可能擁有兩個屬性,__class__
和 __base__
,__class__
表示這個對象是誰創建的,__base__
表示一個類的父類是誰。
2.type(name, bases, dict)
class type(name, bases, dict)
動態的創建一個類,等同於寫class
,name
就是__name__
類的名稱屬性,base
就是__base__
基類,dict
就是__dict__
,類的屬性和方法
name:類名
bases:父類的元組
dict:類屬性的方法和值
下面創建類的方法是等同的
class X:
a = 1
X = type('X', (object,), dict(a=1))
使用type
創建類,本質上和寫class
沒有區別
def say(self): # 定義一個函數,一會通過type放入類中
print("hello")
Person = type("Person",(object,),dict(say = say, name = "wang")) #使用 type() 函數創建類 另外注意,元組只有一個元素時`,`號不能省略
person = Person() # 實例化對象
person.say()#調用 say() 方法和 name 屬性
print(person.name)
參考:
http://c.biancheng.net/view/2292.html
https://www.cnblogs.com/mxuanli/p/9805122.html