Сначала я должен сказать, что я использую Python 3.5.2.Я думаю, что-то не так с ipython , когда я определяю свои собственные классы.Поэтому, когда я запускаю следующий код в стандартной консоли Python, я не получаю сообщение об ошибке:
class A(dict):
def __getattribute__(self, item):
return self[item]
a = A({'x' : 1})
a['x']
Но когда я запускаю приведенный выше код в консоли ipython , я получаю следующую ошибку:
KeyError Traceback (most recent call last)
/usr/local/lib/python3.5/dist-packages/IPython/core/prefilter.py in prefilter_lines(self, lines, continue_prompt)
333 for lnum, line in enumerate(llines) ])
334 else:
--> 335 out = self.prefilter_line(llines[0], continue_prompt)
336
337 return out
/usr/local/lib/python3.5/dist-packages/IPython/core/prefilter.py in prefilter_line(self, line, continue_prompt)
308 return normal_handler.handle(line_info)
309
--> 310 prefiltered = self.prefilter_line_info(line_info)
311 # print "prefiltered line: %r" % prefiltered
312 return prefiltered
/usr/local/lib/python3.5/dist-packages/IPython/core/prefilter.py in prefilter_line_info(self, line_info)
250 """
251 # print "prefilter_line_info: ", line_info
--> 252 handler = self.find_handler(line_info)
253 return handler.handle(line_info)
254
/usr/local/lib/python3.5/dist-packages/IPython/core/prefilter.py in find_handler(self, line_info)
257 for checker in self.checkers:
258 if checker.enabled:
--> 259 handler = checker.check(line_info)
260 if handler:
261 return handler
/usr/local/lib/python3.5/dist-packages/IPython/core/prefilter.py in check(self, line_info)
414 def check(self, line_info):
415 obj = self.shell.user_ns.get(line_info.ifun)
--> 416 if isinstance(obj, Macro):
417 return self.prefilter_manager.get_handler_by_name('macro')
418 else:
<ipython-input-1-cb6806333b6b> in __getattribute__(self, item)
1 class A(dict):
2 def __getattribute__(self, item):
----> 3 return self[item]
4
KeyError: '__class__'
Пожалуйста, помогите, если у вас есть представление об этой проблеме.