2015-11-24 33 views
0

我需要定義一個在一個類的所有方法中使用的變量。如何爲所有類方法使用定義變量?

class A: 
    def method1(self): 
     for i in range(N): 
      *do something with M* 
    def method2(self): 
     for i in range(N): 
      *do other thing with M* 

等等。 我需要做的就是在類的開頭描述的某個地方定義N和M變量。我試圖用這樣的構造函數來定義它:

class A: 
    def __init__(N, M): 
     self.N=N 
     self.M=M 
    def method1(self): 
     ... 

在傾向於使用此參數調用A一次。但是現在我還沒有真正知道如何使用構造函數,還有另一個錯誤。然後,我將這個變量作爲每個方法的參數添加:

... 
def method1(self, N, M): 
    ... 

而那段時間它的工作完美。但是我不想在每次打電話給A.methodX()時輸入數值,並且我100%肯定有一個或兩個方法符合我的要求。

+1

好像你有正確的想法是什麼使用構造函數,你的錯誤是什麼?它可能是可修復的 –

+1

構造函數的方法是「正確的方式」,您嘗試的確切代碼是什麼以及確切的錯誤? – Jasper

+0

@ R當我打電話給A.methodX()時,它只是說N沒有定義。 –

回答

0

你在正確的軌道上,所以我寫了一個簡短的版本,我懷疑你想用一個嵌入的「調試」代碼來做什麼。注意類aa = A(1,2)

class A: 
    def __init__(self, N, M): 
     self.N = N 
     self.M = M 
    def method1(self): 
     print ("iterate N") 
     for i in range(self.N): 
      print (str(i) + "\n") 
    def method2(self): 
     print ("iterate M") 
     for i in range(self.M): 
      print (str(i) + "\n") 


aa = A(1, 2) 
aa.method1() 
aa.method2() 

注意的實例是什麼,我在這裏所做的就是創建實例變量 - 你也可以通過實例化它們的方法之外創建類變量。所以iVar變成了類變量。

class A: 

    iVar = 0 

    def __init__(self, N, M): 
      self.N = N 
      self.M = M 

    ...... 
+0

非常感謝!你看,我在OOP方面非常新穎,整個想法都在使用SELF.PARAMETER,而不僅僅是PARAMETER! –

+0

很高興幫助:) – KevinDTimm

相關問題