1. 程式人生 > >gj2 python中一切皆對象

gj2 python中一切皆對象

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中一切皆對象