Значение Dict как экземпляр класса для вызова метода - PullRequest
0 голосов
/ 02 августа 2011

Сохранены экземпляры класса Abc как значения dict с номером в качестве ключа.Затем я хочу использовать ключ dict, чтобы найти экземпляр и вызвать функцию «здесь» для этого экземпляра.Код (Python 3.2 на MS Win 7):

class Abc():

    def __init__ ( self, num ):
        self.num = num
        print ( 'Starting sess no - ', self.num )

    def here ( self ):
        print ( 'Here - ', self.num )

def main():
    sess = dict ((i, Abc(i)) for i in range ( 3 ))
    for i in range ( 7 ):
        print ('Go to Sess - key: ', i % 3, ' value: ', sess [i % 3] )
        try:
            sess [i % 3].here
        except:
            raise KeyError ('Problem with key')

, который выдает такой вывод:

Starting sess no -  0

Starting sess no -  1

Starting sess no -  2

Go to Sess - key:  0  value:  <__main__.Abc object at 0x00C193B0>

Go to Sess - key:  1  value:  <__main__.Abc object at 0x00C19510>

Go to Sess - key:  2  value:  <__main__.Abc object at 0x00C19530>

Go to Sess - key:  0  value:  <__main__.Abc object at 0x00C193B0>

Go to Sess - key:  1  value:  <__main__.Abc object at 0x00C19510>

Go to Sess - key:  2  value:  <__main__.Abc object at 0x00C19530>

Go to Sess - key:  0  value:  <__main__.Abc object at 0x00C193B0>

Abc.here не выполняется ни для одного экземпляра.Это выполнимо?Если да, то какой код мне нужен?

Ответы [ 3 ]

2 голосов
/ 02 августа 2011

Вы рубин?В скобках Python всегда обязательно вызывать метод:

sees [i % 3].here

должно быть

sees[i % 3].here()
1 голос
/ 02 августа 2011
sess [i % 3].here

ничего не делает.Вы хотите назвать это:

sess[i % 3].here()
0 голосов
/ 02 августа 2011

Не отступать от определения here() под __init__ - оно должно быть на том же уровне, что и __init__.

Вам также нужно вызвать функцию - добавьте () после sees [i % 3].here.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...