文章目錄
- 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的一等公民。
- 指派給一個變量
- 可以添加到集合對象中
- 可以作為參數傳遞給函數
- 可以當作函數的傳回值
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'>
由圖可知道一切皆對象。
**注意:**object是Type的執行個體,所有的内置類都是由
Type
建立出來的,Type建立了所有的對象。是以
list
是一個類,又是
Type
的對象。
-
:是所有對象的基類,連Object
都要繼承自它。Type
-
:建立了所有對象,Type
是自身的執行個體,是以一切都是對象。Type
3、常見内置類型
3.1、對象的三個特征
- 身份:對象在記憶體中的位址
- 類型:執行個體化對象的類型
- 值:
>>> a = 1
>>> id(a)
4410952368
>>> type(a)
<class 'int'>
>>> a
1
3.2、None(全局隻有一個)
None類型,Python在解釋器啟動的時候用None類型生成一個None對象。
3.2、數值
- int
- float
- complex(複數)
- bool
3.3、疊代類型
可以用for循環來周遊,實作内置方法。
3.4、序列類型
- list
- bytes、bytearray、memoryview(二進制序列)
- range
- tuple
- str
- array
3.5、映射類型
dict:有key和map
3.6、集合
- set:
- frozenset:不可以修改的set
set和dict的實作原理相同,效率差不多。
3.7、上下文管理器(with)
實作兩個方法:
enter
和
exit
。
3.8、其他類型
- 子產品類型:form 和 import 也是類型。
- class和執行個體
- 函數類型
- 方法類型:是class裡面定義的函數。
- 代碼類型:代碼會被Python解釋器變為對象類型。
- object對象
- type類型
- ellipsis類型:省略号類型
- notimplemented類型: