2016-11-06 62 views
-2

我用兩種方法創建了一個類'Employee',如下所示。我知道這些實例方法不能在沒有實例化對象的情況下被類本身訪問。如何在不實例化任何對象的情況下訪問實例方法?

但是,下面的代碼是如何工作的,沒有任何實例化對象?

>>> class Employee: 
    def __init__(self,name): 
     self.name = name 
    def getName(self): 
     return self.name 

>>> Employee('John Doe').getName()  #how this code is working?? 
'John Doe' 

我沒有在上面的代碼中看到任何實例化對象的跡象。但它正在工作,如何?

+2

'員工('John Doe')'實例化一個對象。 – Keiwan

回答

0

創建一個實例。這就是調用類確實,它創建一個實例:

>>> Employee('John Doe') 
<__main__.Employee instance at 0x1042bab48> 

您不必商店,例如能在同一個表達式中使用它。通過加入.getName()屬性查找並調用Employee('John Doe')部分的結果,您只需鏈接查找方法並將其調用到相同的語句中即可。

賦值只是創建一個新引用到剛剛創建的實例,以便稍後可以引用該實例;稍後使用該命名參考會導致Python再次檢索該實例,以便您調用該方法。

比較與上述創建實例的下面的輸出:

>>> employee = Employee('John Doe') 
>>> employee 
<__main__.Employee instance at 0x1042bac68> 

唯一的區別是,現在我存儲有名稱employee創建在變量中實例的結果。再次使用該名稱會導致實例再次被回顯。

Python的話,存在使用Employee('John Doe').getName()employee.getName()查找屬性getName的實例,然後調用它沒有什麼區別。

+0

因此,將變量(引用名稱)分配給實例以使用類的屬性不是強制性的。我希望,我明白了。 –

+0

@PrakashBhattarai:實際上,並不需要保持實例;如果你想要做的只是調用一種方法,那很好。 –

相關問題