2014-06-17 50 views
-3

我該如何定義一個類的屬性?在Python中定義一個類的屬性

class Example: 

    def __init__(self,n,m): 
    self.n=n 
    self.m=m 

或者這樣:

class Example: 
    m=0 
    n=0 

    def __init__(self,n,m): 
    self.n=n 
    self.m=m 

如果我定義構造之外的屬性,它是一個靜態變量?

+0

它取決於 - 你想讓它們成爲*類屬性*(由所有實例共享)還是*實例屬性*(每個實例都是單獨的)? – jonrsharpe

回答

3

我認爲你是混淆實例變量和類本身的變量(你可以稱它們是靜態的,如果你來自java)。看看這個演示(注意,__init__需要兩個下劃線)。

class Example: 
    m=0 
    n=0 

    def __init__(self,n,m): 
     self.n=n 
     self.m=m 

e = Example(1,2) 
print(e.m) # 2 
print(e.n) # 1 
print(Example.m) # 0 
print(Example.n) # 0 

在你的第二個代碼,Example具有類變量mnExample對象的每個實例都將有實例成員self.mself.n

+0

是的,我來自Java ...所以m和n就像Java中的類變量(靜態變量),self.n和self.m是對象變量...並且我不需要在構造函數之外定義它們.. – Ohad

+0

@Shiran是的,如果你不想讓'Example'類本身(與那個類的實例相反)具有屬性'n'和'm',那麼不需要class class Example之後的前兩行'。 – timgeb

2

這樣:

class Example: 

    def __init__(self,n,m): 
    self.n=n 
    self.m=m 

雙得分init,像這樣:__init__,不喜歡這個_init_

m=0n=0是類屬性,並且與self.nself.m(它們是實例變量)沒有任何關係。

相關問題