1. 程式人生 > 實用技巧 >對Python"一切皆物件"的小參悟

對Python"一切皆物件"的小參悟

寫在前面

若有誤區請大神不吝指正,以免帶偏了如我者的弱雞們
據聞對此不再懵逼後,於函式以及高階函式程式設計的進階有益
類:又稱物件,由類建立的個體被稱為例項

名言名句"一切皆物件(一切皆類,一切都是模板)"

a. 溯源的規則就一項:由誰建立,即模板是誰
b. 補充一下Python直譯器中內建的標準型別(就列舉這些吧,基本都見過,沒見過的就算了,於此不重要)

  • None
  • 數字型別:int float complax(複數) bool
  • 迭代型別:generator
  • 序列型別:list tuple range str bytes
  • 集合型別:set frozenset
  • 對映型別:dict
  • 上下文管理器型別:with
  1. 以數字123為例(其餘型別類似)溯源,它是由int類建立的,不信你看
    >>> type(123)
    <class 'int'>
    
  2. int由type類建立,不信你看
    >>> type(int)
    <class 'type'>
    
  3. type由type類建立,沒錯,就是自己建立自己,不信你看
    >>> type(type)
    <class 'type'>
    
  4. 自建個普通類再看看
    class Persion:
        pass
    
    >>> type(Persion)          # 由type類建立
    <class 'type'>
    
  5. 特殊的類,基類object
    >>> type(object)          # 由type類建立
    <class 'type'>
    

小結1:類 int、type、Persion、object 都是由type建立的

證明object是一切類的基類

  1. int、type、Persion的父類都是object,不信你看
    >>> int.__bases__       # 檢視繼承的父類,返回一個tuple
    (<class 'object'>,)
    >>> type.__bases__
    (<class 'object'>,)
    >>> Persion.__bases__
    (<class 'object'>,)
    
  2. object沒有父類,不信你看
    >>> object.__bases__
    ()
    

總結:一切皆物件,一切皆繼承自object

  1. 類都是由type建立的,包括自己建立自己,且繼承自object
  2. object是一切類的父類,同時object也是type的建立的

名言名句"先有雞還是先有蛋"

  • 先有type還是先有object?