gj2 python中一切皆對象
阿新 • • 發佈:2019-02-10
display 函數類型 賦值 def 2.3 pan itl dict 參數傳遞
2.1 python中一切皆是對象
動態語言和靜態語言的區別,Python的面向對象更徹底
同時動態語言,代碼的靈活性高
沒有編譯(檢查)的過程,錯誤只有在運行起來後才會發現
函數和類也是對象,屬於python的一等公民
1. 賦值給一個變量
2. 可以添加到集合對象中
3. 可以作為參數傳遞給函數
4. 可以當做函數的返回值
def ask(name="lewen"): print(name)
class Persoon(object): def __init__(self): print("lewen") obj_list = [] obj_list.append(ask) obj_list.append(Persoon) for item in obj_list: print(item())
lewen
None
lewen
<__main__.Persoon object at 0x0000029B7B3BBA20>
2.2 type、object和class的關系
type 的用法 1:生成一個類 2:反回一個對象是什麽類型
>>> a = 1 >>> type(a)<class ‘int‘> >>> type(int) <class ‘type‘> >>> b = "abc" >>> type(b) <class ‘str‘> >>> type(str) <class ‘type‘> >>> class Student: ... pass ... >>> stu = Student() >>> type(stu) <class ‘__main__.Student‘> >>> type(Student) <class ‘type‘>
type->int->1
type->class->obj
type是用來生成類的
>>> type(Student) <class ‘type‘> >>> Student.__bases__ (<class ‘object‘>,) >>> class MyStudent(Student): ... pass ... >>> MyStudent.__bases__ (<class ‘__main__.Student‘>,) >>> type.__bases__ (<class ‘object‘>,) >>> type(object) <class ‘type‘> >>> object.__bases__ () >>> type(type) <class ‘type‘>
# object 是最項層基類
# type 也是一個類,同時type也是一個對象
一切都繼承自object,一切皆對象
type 自己是自己的實例(內部通過指針指向同一個內存塊)
2.3 python中的常見內置類型
對象的三個特征: 身份(對象在內存中的地址) In [1]: a=1 In [2]: id(a) Out[2]: 140714948027216 類型(什麽類型的對象) 值 None(全局只有一個) 數值:int float complex bool 叠代類型 序列類型 list bytes、bytearray、memoryview(二進制序列) range tuple str array 映射(dict) 集合:set ,frozenset 上下文管理類型(with) 其他: 模塊類型 class和實例 函數類型 方法類型 代碼類型 object對象 type類型 ellipsis類型 notimplemented類型
gj2 python中一切皆對象