Python中的元类和猴子补丁都是基于一切皆对象
函数和类也是对象,属于Python的一等公民
类可以直接实例化对象,为什么也是对象?
一等公民的特性:
- 赋值给一个变量
- 可以添加都集合对象中
- 可以做为参数传递给函数
- 可以当做函数的返回值
1 赋值给一个变量
def ask(name='Tom'):
print(name)# 定义一个函数
my_func = ask # 将函数赋值给一个变量
my_func('Tom')# 可以将变量当做函数来使用
class Person: # 定义一个类。再定义一个初始化的函数
def __init__(self):
print('Tom')
my_class = Person # 实例化类对象
my_class() # 调用类对象
说明类和函数都是对象。(可以赋值给一个变量)
2 可以添加都集合对象中
# 函数
def ask(name='Tom'):
print(name)
obj_list = []
obj_list.append(ask)
for i in obj_list:
print(i())
# 类
class Person:
def __init__(self):
print('Jack')
obj_list = []
obj_list.append(Person)
for i in obj_list:
print(i())
4 当做函数的返回值
函数可以返回一个函数,实际上是装饰器的实现原理
def ask(name='Tom'):
print(name)
def decorator_func():
print('dec start')
return ask
f = decorator_func() # decorator_func返回的是一个函数。这里接收一个函数
f('Jack')
网友评论