2015-07-05 19 views
-7

我有一個關於這段代碼的兩個問題:爲什麼我要在功能中使用「自我」?

class Enemy 
    def __init__ (self, x): 
     self.energy=x 

jason=Enemy(5)  
  1. 爲什麼我必須使用self當我創建函數和實例變量?使用它的目的是什麼?

  2. 當我們創建jason對象時,我們給它賦予了一個5的生命,如Enemy(5)。但是,類名可以在裏面使用變量嗎?或者它是否使得它成爲可能的__init__函數? (當我們聲明這個類的時候,我期望得到類似於class Enemy (x)的東西)。

+2

'self'是指當前對象 - 對象已經被__new__()方法,它是一個類的方法,一個SO問題,以幫助瞭解如何newinit創建工作後__init__()被調用。 –

+0

https://docs.python.org/3/tutorial/classes.html。請注意,由於缺少冒號,因此您的代碼無法正常工作。 – jonrsharpe

+0

但是,如果我沒有創建賈森,我不會有一個對象。那時候自我指的是什麼? –

回答

0

在Python中,類方法,第一個參數(通常人的名字self)是指用於調用該函數的類的實例(對象),它沒有被命名爲自,但那是公約。

示例 -

>>> class CA: 
...  def __init__(someotherself, i): 
...    print(someotherself) 
...    print(i) 
...    someotherself.i = i 
... 
>>> CA(1) 
<__main__.CA object at 0x00514A90> 
1 
<__main__.CA object at 0x00514A90> 

當你做這樣的事情 -

self.energy=x 

要設置裏面selfenergy變量(表示當前的對象)爲x。

當你這樣做 -

jason=Enemy(5) 

Python的內部調用敵人的與值__init__()方法對於x 5(和自我與當前對象)。 Python's use of __new__ and __init__?

+0

'__new__'不是一個靜態方法,它是一個類方法 – jonrsharpe

+0

謝謝你所有的迴應!我現在明白,「自我」是指在程序中創建的對象。 –

相關問題