Python 中__new__方法詳解及使用


1、__new__的作用

在Python中new方法與init方法類似,但是如果兩個都存在那么new閑執行。

在基礎類object中,new被定義成了一個靜態方法,並且需要傳遞一個參數cls。
Cls表示需要實例化的類,此參數在實例化時由Python解析器自動提供。

new()是在新式類中新出現的方法,它作用在構造方法init()建造實例之前,可以這么理解,在Python 中存在於類里面的
構造方法init()負責將類的實例化,而在init()調用之前,new()決定是否要使用該init()方法,因為new()可以調用其他類的
構造方法或者直接返回別的對象來作為本類 的實例。


2、new()方法的特性

new()方法是在類准備將自身實例化時調用。

new()方法始終都是類的靜態方法,即使沒有被加上靜態方法裝飾器;


3、實例

class Person(object):
  
    def __init__(self, name, age):
        self.name = name
        self.age = age
     
    def __new__(cls, name, age):
        if 0 < age < 150:
            return object.__new__(cls)
            # return super(Person, cls).__new__(cls)
        else:
            return None
  
    def __str__(self):
        return '{0}({1})'.format(self.__class__.__name__, self.__dict__)
  

print(Person('Tom', 10))
print(Person('Mike', 200))


結果:

Person({'age': 10, 'name': 'Tom'})

None


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM