總結猶記得當初學習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
上面的**是演示何為python的一等公民,那麼對於為什麼python一切皆物件,想必有些道友還是有點不太懂,那麼重點來了,了解完type、object和class後,木子覺得大家應該就可以徹底hold住了。the decorator_func is running
the func is 木子的三維世界
為便於理解,**予以展示:
上面**,執行結果如下:# 示例如下
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...