AdvancePython-python中一切皆对象

python中一切皆是对象

python与其他语言有所不同,在python中,一切皆是对象。函数、类都是对象。
关于的一切皆对象更深入的学习,请借鉴AdvancePython-2.2type、object和class的关系

1.对象可以赋值给一个变量

将函数作为对象赋值给一个变量:

def ask(name="func "): #定义一个函数ask
    print(name)

my_func = ask         #将函数赋值给一个变量
my_func("func")       #然后我们就可以把该变量当做函数来使用

运行结果:
函数作为对象
将类作为一个对象赋值给一个变量:

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

my_class = Person
my_class()        #把变量当做类来使用,去实例化类(自动调用__init__方法)

运行结果:
类作为对象

2.对象可以添加到集合对象中

如下,将上面定义的函数和 类添加到obj_list列表中

obj_list = []
obj_list.append(ask)     #添加函数
obj_list.append(Person)  #添加类
for item in obj_list:    #遍历并输出
    print(item())

运行结果:
将对象添加到集合对象中
注:
(1)func是函数内部自己打印的
(2)None是函数的返回值
(3)class是类内部自己打印的
(4)<main.Person object at---------------->是类对象的类型

3.对象可以作为参数传递给函数

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

obj_list = []
obj_list.append(ask)
obj_list.append(Person)
for item in obj_list:
    print_type(item)    #将对象作为实参传递给print_type函数

运行结果:
将对象作为函数参数

4.对象可以当做函数的返回值

函数返回一个函数,这其实是python装饰器的原理。

def ask(name="func "):
    print(name)
def decorator_func():
    print("dec start")
    return ask           #返回ask函数

my_ask = decorator_func()   #先调用decorator_func打印出"dec start"
my_ask("tom")  #再调用my_ask打印出“tom”

对象可以当做函数的返回值

发布了16 篇原创文章 · 获赞 4 · 访问量 1785

猜你喜欢

转载自blog.csdn.net/qq_40509206/article/details/103445534