1. 程式人生 > 實用技巧 >Python 高階程式設計系列__02:type、object、class 的關係

Python 高階程式設計系列__02:type、object、class 的關係

通過以下程式碼可以瞭解 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,可以很好地實現這一點。