Python是一門強大的編程語言,它有許多實用的內置函數,其中之一就是new函數。
class Employee: def __new__(cls, *args, **kwargs): print("Calling __new__ method") instance = super().__new__(cls) return instance def __init__(self, name): print("Calling __init__ method") self.name = name e = Employee("John")
new函數是Python中所有類的構造函數,它在實例化類對象時自動調用。__new__方法是Python中的一種特殊方法,它用于創建一個實例對象并將其返回。它是一個類方法,可以以類作為第一個參數進行調用。
在上面的示例中,我們定義了一個Employee類,并重新定義了__new__方法。在這個方法中,我們首先打印了一個消息,然后調用了super()函數的__new__方法來創建一個實例,并將它返回。同時,我們也可以在__new__方法中加入一些自定義的代碼來控制實例對象的創建。
接下來,我們定義了一個__init__方法,它在實例對象創建完成之后被調用,用于初始化對象的屬性。在這個方法中,我們先打印一條消息來驗證程序的執行順序,然后對實例的name屬性進行賦值。
最后,我們創建了一個Employee類的實例e,并且傳入了一個名為“John”的參數。程序的執行結果如下:
Calling __new__ method Calling __init__ method
從結果可以看出,程序首先調用了__new__方法,然后調用了__init__方法,而__new__方法是在__init__方法之前被調用的。
總結一下,new函數是Python中一個非常重要的類方法,它用于創建一個實例對象并將其返回。在有些情況下,我們可以通過重新定義__new__方法來自定義實例的創建過程。