Python高级编程(2):type、object和class之间的关系
关于这部分,很多人特别是小白几乎就没弄明白过,只知道所有的类都继承我们的基类object,实际上这样说是不对的。所以今天我们就来仔细捋一捋这三者之间的关系。我们通过边用代码边说逻辑的方式进行说明。
实例化关系
type两种用法:第一生成一个类,第二返回某个对象的类型。我们这里使用它的第二种用法。首先我们先来测试一下整型:
1 | >>> a =1 |
接下来我们测试一下字符串和列表用来说明Python的其他内置类型也是具有相同的功能:
1 | >>> a ="envse" # 字符串 |
看到这里你可能还有其他的想法,比如类如何?那好,我们试试自己定义的类:
1 | >>> class Student: # 自定义一个Student类 |
所以从上面的例子可以看出,Python中所有的对象(包含type本身)都是type的实例化对象。说完了这个我们再来说一下继承关系。
继承关系
我们来看一下它们的继承关系,可以使用__bases__
来查看继承关系:
1 | >>> list.__bases__ |
从上面的例子中,我们可以看到除了object类以外,所有的类都是继承于object这个最高的基类。对象不存在继承关系。为了便于理解,我找了一张图片,这个图片讲得非常详细:
图中虚线代表实例化,实线代表继承关系。
我们可以把这些分为3类:
第一类:type自成一类,type是自己的对象(可以实例化自己),type可以把所有的对象变成它的对象(实例化所有对象)
第二类:list、str、dict、tuple等类会继承object类,同时也是type实例化的对象。object是所有类的基类(自身除外的一切类都继承object)
第三类:生成的对象(不具有继承关系)
这样我们就对type、object和class之间的关系就有了一个清晰的认识:所有的object都是type的一个实例,除object之外的所有class都继承于object这一最高基类。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 余思博客!
评论