Python 高階程式設計系列__02:type、object、class 的關係
阿新 • • 發佈:2020-11-17
通過以下程式碼可以瞭解 type、object、class 的關係:
a=1
b="abc"
print (type (1))
print (type (int))
print (type (b))
print (type (str))
輸出:
<class 'int'>
<class 'type'>
<class 'str'>
<class 'type'>
這說明:
type -> int -> 1
type -> class -> object
type這個類生成一個型別,這個型別再生成一個物件。
得出結論:類是由type
object是最頂層的基類,所有的類推算到最後,它們的基類都是object。
可以再看下面的例子:
class Student: pass class Mystudent (Student): pass stu = Student() print(type (stu)) print(type (Student)) print(int.__bases__) print(str.__bases__) print(Student.__bases__) print(Mystudent.__bases__) print(type.__bases__) print(object.__bases__) print(type (object)) 輸出: <class '__main__.Student'> <class 'type'> (<class 'object'>,) (<class 'object'>,) (<class 'object'>,) (<class '__main__.Student'>,) (<class 'object'>,) () <class 'type'>
結論:
1、自定義的類,他的型別也是type。
2、所有的類的最頂層的基類,是object。
3、object 的上一層,沒有了,object 就是最頂層。
4、type 本身是一個類,同時也是一個物件,它的父類是 object。
5、object 這個類是由 type 生成的。
6、所有的類,都是有 type 生成的, 包括 type 也是由 type 生成的。
list 是一個類,是type生成的類,也是一個物件,object 的物件。
object 是 type 的一個例項,type 是繼承自 object。
object 是所有類的一個基類。
一切皆物件,一切皆繼承自 object 。
所有的類都是由 type 創建出來的。
這就是 Python 的設計理念:一切皆物件。
既然所有的東西都是物件,那麼函式、類都是物件,那麼就都可以修改,如果是Java,雖然也能改,但是特別麻煩。
Python 的兩套體系,一個是 type,一個是 object,可以很好地實現這一點。