Python中一切皆对象

1.Python一切皆对象

函数和类也是对象,属于Python的一等公民,体现在以下四点:

1.赋值给一个变量
将函数赋值给一个变量,对这个变量的操作实际上就是对这个函数的操作

def say(name='superzjx'):
    print(name)
    
my_func = say
my_func('superzjx')

class Person:
    def __init__(self):
        print('init')
my_class = Person
my_class()
2.可以添加到集合对象中
obj_list = []
obj_list.append(say)
obj_list.append(Person)
for item in obj_list:
    print(item())
3.可以作为参数传递给函数
def print_type(item):
    print(type(item))
    
obj_list = []
obj_list.append(say)
obj_list.append(Person)
for item in obj_list:
    print_type(item)
4.可以当作函数的返回值
函数作为函数的返回值,在Python中是装饰器的实现原理
def decorator_func():
    print('decorator start')
    return say
my_dec = decorator_func()
my_dec('Hello world')

2.type、class和object的关系

1.type
type有两种用法:生成一个类、返回一个对象的类型
image.png
type生成int,int生成1 type->int->1
image.png
type生成str,str生成'abc' type->str->'abc'
总结就是 type->class->object
以下也是适用 type->class->object逻辑
image.png
所以说我们的类是由type这个类生成的一个类对象,平常熟悉的对象是由类对象创建的对象
因此,type和class的关系是 class是由type生成的

2.object
image.png
type的基类是object,object是由type类生成,type和object形成一个环路
object的基类是个空

image.png

type是一切类的实例
一起对象皆继承object
type对象都是自身的实例(通过指针来实现)

3.Python中常见的内置类型

对象的三个特征:身份(id)、类型、值

1.None(全局只有一个)
image.png
a 和 b 都指向Python解释器中唯一的None对象

2.数值:int、float、complex(复数)、bool
3.迭代类型
4.序列类型:list、bytes,bytearray,memoryview(二进制)、range、tuple、str、array
5.映射类型:dict
6.集合类型:set、forzenset
7.上下文管理器:with
8.其他:模块类型、class类型、函数类型、方法类型、代码类型、object类型、type类型、ellipsis类型、notimplemented类型(不需要掌握)

你可能感兴趣的:(python)