2015-11-24 2 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 Nar, когда я вызываю 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

Большое спасибо! Видите ли, я чрезвычайно новичок в ООП, и вся идея заключалась в использовании SELF.PARAMETER isntead только PARAMETER! –

+0

Рад помочь :) – KevinDTimm

Смежные вопросы