python type

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章