Python2与Python3中关于最上层类继承上的一点小差异
2017-07-17 22:32
423 查看
今天调代码的时候遇到了一点问题,定位到最后最终发现是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的参考范本来的,目前在不同的机器上暂时就保存俩版本了,倒也无伤大雅。
问题出现在类的继承上,这方面我基础薄弱,很多时候都是参考别人的代码。结果最终发现别人用的好好的东西在我这里居然不灵了!如下面的代码:
#!/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的参考范本来的,目前在不同的机器上暂时就保存俩版本了,倒也无伤大雅。
相关文章推荐
- 关于python类继承中metaclass conflict的处理
- 关于对Python作用域的一点理解
- 关于python爬虫的一点心得
- 关于Python中dic的一点尝试
- 关于Python操作txt文件的一点尝试
- 关于JavaScript中原型继承中的一点思考
- 关于Python做爬虫的一点基础
- 关于JavaScript中原型继承中的一点思考
- 『Python』关于Pandas的一点用法
- python关于类的一点思考
- 关于初学python爬虫的一点问题总结(三)
- 关于python以及numpy运行速度的一点思考和记录
- 关于Python中输出中文的一点疑问
- python简明教程里关于zip的一点解决办法
- 关于 python 新式类和旧式类继承顺序的验证
- 关于多重继承时继承顺序的一点体会
- 一点关于CSS中样式继承的问题
- 关于python的继承,super关键字
- 关于多重继承构造函数调用的一点理解与实践
- 关于C++,Java与Python的一点看法