Python-一切皆对象
Python 动态、灵活根本是什么?
Python中一切皆对象,面向对象更加彻底,函数、类也是对象,属于一等公民
一等公民特性
1. 可以赋值给一个变量
def name(name="北门吹雪"): print(name) new_name = name new_name()
2. 可以添加到集合对象中
def name(name="北门吹雪"): print(name) def blog(blog="http://www.cnblogs.com/2bjiujiu/"): print(blog) funcs = list() funcs.append(name) funcs.append(blog) for func in funcs: func()
3. 可以作为参数传递给函数
def ask_name(name): name() def name(name="beimenchuixue"): print(name) ask_name(name)
4. 可以当作函数返回值,装饰器实现原理
def ask_name(name): return name def name(name="beimenchuixue"): print(name) hai = ask_name(name) hai()
type object class 之间的关系
从继承角度来说,class(list str dict tuple ...)继承 object, type也继承 object
# 继承关系 # str 类型继承 object类 print(str.__bases__) # type 类型进程 object类 print(type.__bases__) # object类继承 () print(object.__bases__)
从实例角度来说,"abc" 是 str类型的实例, str又是type类型的实例, object是 type的实例, type是type自身的实例
name = "beimenchuixue" # object class type 实例关系 # name 是 str 实例 print(type(name)) # str 是 type实例 print(type(str)) # object是type实例 print(type(object)) # type是自己的实例 print(type(type))
type > class > object
object是由class类型构建, class由type类型构建
object类是顶层基类,所有类的基类,type也要继承这个类
type是一个类,同时也是对象,继承 object类,把自己变成自己的对象,从而实现Python中一切皆对象
获取变量由什么类型构建的 type()
获取类型的基类 __bases__
object基类是 ()
class的基类是 object
type的基类是 object
Python 常见的内置类型
a. 对象
1. 身份 id()
2. 类型 type()
3. 值 对应类型封装这个值
b. 数值 int float complex bool
c. None(全局唯一只有一个) NoneType类型
d. 迭代
e. 序列 list tuple str range
f. 映射 dict
g. 集合 set frozeset
h. 上下文管理 with
i. 其他类型
1. 模块
2. class和实例
3. 函数
4. 方法
5. 代码
6. object对象
7. type