2016-04-14 2 views
0

У меня проблема с доступом к переменной в методе из другого класса.Доступ к списку по отдельному методу в отдельном классе в python

Я просто избавлюсь от своей проблемы, как показано ниже. Есть три основных класса, которые я использую, я просто поставлю два класса, иначе это может усложнить ситуацию.

from C import* 
Athlete = C() 

class A(object): 

    def Runner(self,runNumber): 

     Athlete.Calculation(runNumber): 
     NumofLaps = Athlete.GetLaps #this is a list so NumofLaps will be a List 

класс C представляет собой отдельный класс, который я не включил здесь, все это делает возвращает список, хранящийся в методе расчета. Above class A - класс, к которому я хочу получить доступ, используя класс Main. как указано ниже,

from A import* 
RunnerList = A() 
class Main.py 

    def RunnerNumber(): 
     number=1 
     RunnerList.Runner(number) 
     number = number + 1 
     #code to access the NumofLaps List goes here 

Проблема, с которой я столкнулась, заключается в том, что для вызова метода требуется ввод при его вызове. (например: RunnerList.Runner (число)). это очень важно для кода, и я действительно не хочу его менять.

Но есть ли способ доступа к списку «NumofLaps» в классе A, метод Runner, из класса Main в методе RunnerNumber.

Например:

RunnerList.Runner(number).NumofLaps 

ответ

0

Вы не можете непосредственно получить доступ к переменной внутри метода, но вы можете передать его самости класса А:

from C import* 
Athlete = C() 

class A(object): 

    def Runner(self,runNumber): 

     Athlete.Calculation(runNumber): 
     self.NumofLaps = Athlete.GetLaps #this is a list so NumofLaps will be a List 

Вы можете получить доступ к своему перечислите по телефону:

RunnerList = A() 
RunnerList.Runner(number) 
the_list_you_need=RunnerList.NumofLaps 
+0

привет, спасибо за ответ, но если я передам его самому себе класса А, мне нужно написать отдельный метод, называемый d ef __init __ (self): – DrakonianD

+1

Нет, 'self' создается методом' __new __() 'перед' __init__'. «__init__» находится здесь, чтобы инициализировать ваш экземпляр при создании, но вам не нужно его реализовывать, если вам не нужна инициализация. – CoMartel

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