您现在的位置是:课程教程文章
python不同版本中的_new_有何不同
2023-12-15 22:06课程教程文章 人已围观
MasterCAM2017视频教程
MasterCAM2017视频教程软件版本: Mastercam 2017 所需基础: AutoCAD基础 教程程度: 初级→中级 适合人群...Oracle培训/OCP/OCM/OCA/ 数据库培训/11g12c版本
Oracle培训/OCP/OCM/OCA/ 数据库培训/11g12c版本...小程序设计与制作[维吾尔文版]【第二版
小程序设计与制作[维吾尔文版]【第二版概要 基于微信小程序轻快的特点,我们拟定了小程序界面设计指南和建议。 设...NX7.5 建模入门教程(适合NX6.0后所有版本
NX7.5 建模入门教程(适合NX6.0后所有版本本课程作为NX软件使用的的入门课程,从基础讲解基本的功能使用,每章节都有...
我们都知道python的版本不同,在使用的时候就有所区别。鉴于我们推荐小伙伴们选择python3版本,所以这方面的区别了解的不是很多。就拿_new_来说,在python2和3中的写法是不一样的,之前有接触_new_的小伙伴想必没有注意到这个问题。接下来讲讲new的基本用法,然后就python不同版本中_new_的区别带来详解。
1.new方法接受的参数虽然也是和init一样,但init是在类实例创建之后调用,而 new方法正是创建这个类实例的方法。
class Person(object): """Silly Person""" def __new__(cls, name, age): print '__new__ called.' return super(Person, cls).__new__(cls, name, age) def __init__(self, name, age): print '__init__ called.' self.name = name self.age = age def __str__(self): return '<Person: %s(%s)>' % (self.name, self.age) if __name__ == '__main__': piglei = Person('piglei', 24) print piglei
2.Python3和 Python2中__new__使用不同
Python3的写法
class Singleton(object): def __new__(cls,*args, **kwargs): if not hasattr(cls,'_inst'): print(cls) cls._inst = super(Singleton, cls).__new__(cls) return cls._inst
如果Python3的写法跟Python2写法一样,那么倒数第二行会报错
"TypeError: object() takes no parameters"
根据上面的运行结果我们可以发现,在python3中强行使用python2的写法是不可行的。如果有小伙伴是习惯了python2的用法,换版本时要注意_new_写法的改变。
课程教程:python不同版本中的_new_有何不同上一篇:python中堆排序算法实现
下一篇:没有了