天天看點

Python一切皆對象Python一切皆對象

文章目錄

  • Python一切皆對象
    • 1、對象
    • 2、Type、Object 和 Class的關系
    • 3、常見内置類型
      • 3.1、對象的三個特征
      • 3.2、None(全局隻有一個)
      • 3.2、數值
      • 3.3、疊代類型
      • 3.4、序列類型
      • 3.5、映射類型
      • 3.6、集合
      • 3.7、上下文管理器(with)
      • 3.8、其他類型

Python一切皆對象

1、對象

函數和類也是對象,屬于Python的一等公民。

  1. 指派給一個變量
  2. 可以添加到集合對象中
  3. 可以作為參數傳遞給函數
  4. 可以當作函數的傳回值
def ask(name='hub'):
    print(name)


class Person:
    def __init__(self):
        print('hubo')


"""
作為參數傳遞
"""


def print_type(item):
    print(type(item))


print_type(Person)

"""
當作函數的傳回值
"""


# def decorator_func():
#     print('dec start')
#     return ask
#
#
# my_ask = decorator_func()
# my_ask()

"""
添加到集合對象中
"""

# obj_list = list()
# obj_list.append(ask)
# obj_list.append(Person)
# for item in obj_list:
#     print(item())

'''
可以指派給一個變量
'''

# my_func = ask  # 将函數對象指派給變量
# my_func('hubo')
#
# my_class = Person   # 将類對象指派給變量
# my_class()

           

2、Type、Object 和 Class的關系

class本身也是一個對象由type生成。

type -> int -> 1

:type生成class,class生成object。

>>> a = 1
>>> type(1)
<class 'int'>
>>> type(int)
<class 'type'>
>>> int.__bases__
(<class 'object'>,)
           

object

是最頂層基類,所有類的最終父類都是

object

,它的基類是空。

>>> object.__bases__
()
           

Type

:即是類又是對象,繼承的類是

Object

>>> type.__bases__
(<class 'object'>,)
           

Object

:是Type建立的對象。

>>> type(object)
<class 'type'>
>>> type(type)
<class 'type'>
           
Python一切皆對象Python一切皆對象

由圖可知道一切皆對象。

**注意:**object是Type的執行個體,所有的内置類都是由

Type

建立出來的,Type建立了所有的對象。是以

list

是一個類,又是

Type

的對象。

  1. Object

    :是所有對象的基類,連

    Type

    都要繼承自它。
  2. Type

    :建立了所有對象,

    Type

    是自身的執行個體,是以一切都是對象。

3、常見内置類型

3.1、對象的三個特征

  1. 身份:對象在記憶體中的位址
  2. 類型:執行個體化對象的類型
  3. 值:
>>> a = 1
>>> id(a)
4410952368
>>> type(a)
<class 'int'>
>>> a
1
           

3.2、None(全局隻有一個)

None類型,Python在解釋器啟動的時候用None類型生成一個None對象。

3.2、數值

  1. int
  2. float
  3. complex(複數)
  4. bool

3.3、疊代類型

可以用for循環來周遊,實作内置方法。

3.4、序列類型

  1. list
  2. bytes、bytearray、memoryview(二進制序列)
  3. range
  4. tuple
  5. str
  6. array

3.5、映射類型

dict:有key和map

3.6、集合

  1. set:
  2. frozenset:不可以修改的set

set和dict的實作原理相同,效率差不多。

3.7、上下文管理器(with)

實作兩個方法:

enter

exit

3.8、其他類型

  1. 子產品類型:form 和 import 也是類型。
  2. class和執行個體
  3. 函數類型
  4. 方法類型:是class裡面定義的函數。
  5. 代碼類型:代碼會被Python解釋器變為對象類型。
  6. object對象
  7. type類型
  8. ellipsis類型:省略号類型
  9. notimplemented類型: