您好,登錄后才能下訂單哦!
這篇文章主要介紹python不同版本中的_new_有什么不同,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
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
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_有什么不同”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。