2017-02-19 18 views
0

У меня есть два отдельных файла в python. В одном файле, у меня есть этот код с «игры» класса:Как получить значения из функции? (python)

def getPosition(self,score): 
    position = [((3,1), 'Good'),((1,2), 'Bad')] 
    return position 

Затем, во втором файле, у меня есть функция, которая принимает в этом классе «игры», при которых функция существует «GetPosition»:

def calculateNextStep(game): 
    actions = [] 
    actions.append(game.getPosition[0]) 
    return actions 

Я просто хочу, чтобы добавить значение списка в позиции 0 GetPosition в действиях, но получаю эту ошибку:

line 95, in calculateNextStep 
    actions.append(game.getPosition[0])   
TypeError: 'instancemethod' object has no attribute '__getitem__' 

я четко не понимаю некоторые важные части Python. Я попытался провести исследование на моем, но я полностью потерял и теперь имею несколько теорий.

+2

Пожалуйста показать всю трассировку стека ошибки. – kennytm

+3

Вы уверены, что опубликовали свой код? Это похоже на ожидаемый результат от чего-то вроде '' game.getPosition [0] '' (квадратные скобки, а не круглые скобки). – jasonharper

+0

@ jasonharper Да, я изменил это –

ответ

0

При использовании функции game.getPosition[0] вы пытаетесь получить доступ к массиву getPosition, который принадлежит к игре. Вместо этого, потому что getPosition - это функция, которую вы должны назвать первым, добавив () до конца вот так: getPosition(). Теперь, как getPosition() возвращает массив, который вы можете их получить доступ к первому элементу с помощью вызова первых, их доступ как этот getPosition()[0]

Edit с примером:

def calculateNextStep(game): 
    actions = game.getPosition()[0] 
    return actions 

Это возвращает кортеж:

((3,1), 'Good')

+0

И если я хочу присвоить какое-то значение позиции getPosition(), как это сделать в calculateNextStep? –

+0

Ну 'getPosition()' он вернет массив, поэтому вы можете рассматривать его как таковой. Если вы хотите установить значение массива позиций, вы должны создать новую функцию 'setPosition (inArray)', которая принимает массив позиций. Так что получите массив позиции, обновите позицию и установите ее. См. Http://www.i-programmer.info/programming/python/3942-arrays-in-python.html для манипулирования массивами. – ChickenFeet