将Abc类实例存储为dict值,并以数字作为键。然后我想使用dict键来查找实例并为该实例调用函数“here”。 (MS Win 7上的Python 3.2)代码:
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没有被执行任何实例。这可行吗?如果是这样,我需要什么代码?
答案 0 :(得分:2)
sees [i % 3].here
必须是
sees[i % 3].here()
答案 1 :(得分:1)
sess [i % 3].here
什么都不做。你想称之为:
sess[i % 3].here()
答案 2 :(得分:0)
请勿在{{1}}下方缩进here()
的定义 - 它应与__init__
处于同一级别。
您还需要实际调用该函数 - 在__init__
之后添加()
。