Python2与Python3中关于最上层类继承上的一点小差异

来源:互联网 发布:ansible.cfg mac 编辑:程序博客网 时间:2024/06/06 09:07

       今天调代码的时候遇到了一点问题,定位到最后最终发现是Python版本的问题。解析器的升级实在是不方便,最终只好出现了两种不同的代码。

       问题出现在类的继承上,这方面我基础薄弱,很多时候都是参考别人的代码。结果最终发现别人用的好好的东西在我这里居然不灵了!如下面的代码:

#!/usr/bin/python

 

class Demo:

       pass

      

print(Demo.__base__)

       在Python3中,上面的代码可以正常运行最终输出如下结果:

E:\WorkSpace\programme_language\python\OOP>pythonbase.py

<class'object'>

       但是,上面的代码在Python2中运行会报错。这个问题之前就已经在博客中简单提了一下。倒不是自己忘了,还是因为自己的知识太薄弱,这方面了解不多。类似的类在作为基类进行新的类创建并使用的时候就会遇到问题,最根本的原因就是Python2不能够隐性默认继承object。而解析器最终找不到最基础的类的父类。

       如果在Python2中,创建一个类的时候如果什么都不继承那就需要显式继承object。这就是与Python3不一样的地方。

       再进一步,其实这个地方还是有途径可以实现通用性代码的。那就是全都写成Python2的风格,其实Python3下面也能够正常运行。只可惜我的代码是从一个Python3的参考范本来的,目前在不同的机器上暂时就保存俩版本了,倒也无伤大雅。