python高级编程(一) 一切皆对象

1. 变量 函数 类 都是对象

python一切皆对象,函数,类一样可以当对象,可以当做参数,可以当做返回值。

2. type,object,class之间的关系

当我们查看一个对象的类型时可以用type(obj)来看,而我们知道所有类的基类都是object,而object的类型是什么呢?
我们输入type(object) 发现他的类型是type。
我们又想到,object的类型是type,那么type也应该是一个类,那么type的类型是什么呢?
我们继续输入type(type) 可以看见返回值是type。
我们继续输入type.__bases__ 返回了object
由此我们可以知道,一切类的基类都是object,而object本身谁都不继承。所以我们输入object.__bases__ 返回了一个
空元组。
总结一下
一个类(class)的类型都是type ,一个除了object的类的基类都有object (后面会说一个例外)
常规的我们都好理解,
下面说下他们几个的关系:
type的类型同样是type,type的基类是object
object当然也是一个类,所以他的类型也是type 但是他是最顶端的类,所以他没有父类。

3. python内置类型

1. None全局只有一个
2.  数值类型:int, float,complex(复数),bool
3.  迭代类型
4.  序列类型:list,range,tuple,str,array
5.  映射类型:dict
6.  集合类型:set
7. 上下文管理类型(with)

重点说下None 也就是上面说的例外,我们知道None是一个常量,全局只有一个,我们可以把它赋值给任何类型,但是他自己的类型是’NoneType’,我们通过type(None)可以知道。
NoneType这个类型是搜索不到的,我们用NoneType.bases 告诉我们NoneType没有被定义,用type(NoneType)也是同样的error.所以我们记住NoneType虽然也是个类,但是它是与其他类不一样的。
那么我们可能会在编程中遇到这个类型,如果想处理这个类型的我们想到的是 type(obj)==NoneType 就像type(int)==type一样会返回True。
但是由于NoneType 没有被定义 我们这样会报错的,所以我们不能这样判断,但是因为NoneType类型的对象只有None一个 所以我们遇到这个类型的时候直接判断值是否为None就好了。如obj == None

你可能感兴趣的:(python)