Python 高級編程系列__01:一切皆對象

Python的面向對象更加完全。python

函數和類也是對象,屬於 python 的一等公民。app

類能夠理解爲模板,也是一個對象,能夠動態修改他的屬性。函數

一、賦值給一個變量
函數對象賦值給一個變量:code

def ask(name="baby",age=3):
    print(name, age)

my_func = ask
my_func("Bob",18)

輸出結果:
Bob 18

類對象賦值給一個變量:對象

#類對象賦值給一個變量
class Person:
    def __init__(self):
        print("Person class")


my_class = Person
my_class()

輸出:
Person class

二、能夠添加到集合對象中it

def ask(name="baby",age=3):
    print(name, age)

class Person:
    def __init__(self):
        print("Person class")

obj_list = []
obj_list.append(ask)
obj_list.append(Person)

for item in obj_list:
    print(item)

輸出:
<function ask at 0x106e320d0>
<class '__main__.Person'>

三、能夠做爲參數傳遞給函數io

def ask(name="baby",age=3):
    print(name, age)

class Person:
    def __init__(self):
        print("Person class")

obj_list = []
obj_list.append(ask)
obj_list.append(Person)

for item in obj_list:
    print(item())

輸出:
baby 3
None
Person class
<__main__.Person object at 0x109f0d978>

解釋:
baby 3 : ask 函數實例化後打印出來的結果
None:ask 函數沒有返回值
Person class:Person 類的 print 打印的結果
<__main__.Person object at 0x109f0d978>:對象的返回值是一個 Person object

注意和上面例子的區別在於:
for循環的print函數,對 item 作了實例化:item()for循環

四、能夠當作函數的返回值
函數能夠返回一個函數,這是 python 裝飾器的實現原理function

def ask(name="baby",age=3):
    print(name, age)

def decorator_func():
    print("desc start")
    return ask

my_ask= decorator_func()
my_ask("Tom",21)

輸出:
desc start
Tom 21
相關文章
相關標籤/搜索