徹底搞懂Python一切皆物件!!!

2021-09-24 02:51:24 字數 3229 閱讀 2365

總結猶記得當初學習python的時候,對於python一切皆物件很是懵逼,因為python是物件導向的動態型語言,而在函式及高階函式的應用中,如若對於一切皆物件不是有很透徹的了解,基礎不是那麼牢固的話,那麼對於今後的python高階而言,就有點拖後腿了,鑑於有朋友跟我聯絡說,對於一切皆物件掌握的不是太牢固,那麼, 木子的本篇部落格就對此知識點進行概括總結。

如有不當之處,還望各位大佬指正。

python的一等公民

type、object和class的關係

對於python的常見內建型別,本篇就不做詳細闡述

內建型別:

none(全域性只有乙個)

數值型別:int、float、complax(複數)、bool

迭代型別

序列型別:list、bytes、range、tuple、str、array

對映型別:dict

集合型別:set、frozenset

上下文管理型別:with

何為一等公民?

針對賦值給變數及新增到集合物件中,**予以展示:

def func(name='python'):

print(f'the func is ')

class test:

def __init__(self):

print(f'the class is ')

obj_list =

for item in obj_list: # 新增至集合物件中

print(item())

那麼上述例子,**執行結果如下:

the func is python								# 函式func執行,列印結果

none # 函式func因沒有return,返回none

the class is test # 類test執行,列印結果

<__main__.test object at> # 類test執行,因沒有返回值,呼叫item(),返回類test的物件

那麼對於可以作為引數傳遞,以下**展示:

def func(name='python'):

print(f'the func is ')

def decorator_func():

print(f'the decorator_func is running')

return func # 返回函式func

my_test = decorator_func()

my_test('木子的三維世界') # 傳遞引數,呼叫func

上述**執行結果如下:

the decorator_func is running

the func is 木子的三維世界

上面的**是演示何為python的一等公民,那麼對於為什麼python一切皆物件,想必有些道友還是有點不太懂,那麼重點來了,了解完type、object和class後,木子覺得大家應該就可以徹底hold住了。

為便於理解,**予以展示:

# 示例如下

a=2019

b="一切皆物件"

print(type(2019))

print(type(int))

print(type(b))

print(type(str))

class student:

pass

stu = student()

print(type(stu))

print(type(student))

print(int.__bases__)

print(str.__bases__)

print(student.__bases__)

print(type.__bases__)

print(object.__bases__)

print(type(object))

print(type(type))

上面**,執行結果如下:

# 2019是由int這個類建立的例項

# int這個類是由type這個類建立的例項

# 同上

# stu是類student建立的例項

# 類student是由type這個類建立的例項

(,) # 類int的基類是object這個類

(,) # 同上

(,) # 同上

(,) # 重點:類type的基類也是object這個基類

() # 重點:類object沒有基類

# 難點:類object是由類type建立的例項

# 難點:類type是由type類自身建立的例項

對於上面的**,我們可以得出以下結論:

類type產生int例項,類int又有了2019這樣的例項

類object是最頂層的基類

type也是乙個類,同時也是乙個物件

想必有些道友,看到上面的**,已經有點懵逼了。請看下圖:

對於上面的解讀如下

object是一切物件:list、str、dict、tuple的基類,同時object是type的例項

類type是自身的例項,同時type也繼承自object類

由結論1和結論2,得出一切皆物件,同時一切皆繼承自object類

python一切皆物件對於函式式程式設計,以及python各種高階用法有很大幫助。

如果哪位道友還不是很清楚,那麼多看看上面的,沒事兒多看看,多看看不壞事兒。。。好了,話又開始多了

那麼想必各位道友看到這裡,已經對於python一切皆物件有了比較清的認知,後續木子會更新一篇關於python元類的部落格,今天也算是做個鋪墊。

備註:為何type類可以自身的例項,有興趣的道友可以了解下指標的概念。

時候不早了,睡覺睡覺,明天周一上班。。。

python 一切皆物件

在python中有一句話 一切皆物件 其實在剛開始接觸python的時候對這句話完全不理解,即使是看完了python基礎教程也沒有很好的理解這句話的含義。直到看了python的原始碼才對這部分有了更深入的理解。我的入門指導書是 python原始碼剖析深度探索動態語言核心技術 在python中下列語句...

Python 一切皆物件

學習筆記 class dxiang def ff self print 這是物件的方法 one方法 def common canshu 定義乙個方法在類之外 print 這是乙個普通的方法的引數 canshu common 2 呼叫函式方法 dxiang.method common 類的方法增加乙個...

一切皆物件

description 一切都是物件 everything is an object。所以,現在定義乙個類thing,來描述世界上所有有名字的事物。該類只有建構函式 拷貝建構函式和析構函式,並具有乙個字串資料成員來儲存其名字。input 輸入只有1行,是乙個沒有空白符的字串。output 見樣例。s...