объект 'function' не может быть подписан в локальном пакете - PullRequest
0 голосов
/ 25 января 2019

При попытке узнать, как работают модули и пакеты Python, у меня возникает следующая ошибка, из-за которой я не могу найти способ:

$ ./myMain.py
Traceback (most recent call last):
  File "./myMain.py", line 6, in <module>
    print(foobar.getKey['A'])
TypeError: 'function' object is not subscriptable

Моя структура каталогов следующая:

.
├── myMain.py*
└── utils/
    └── Foo/
        ├── __init__.py
        ├── __pycache__/
        │   ├── __init__.cpython-36.pyc
        │   └── foobar.cpython-36.pyc
        └── foobar.py

и myMain.py будут основным сценарием, из которого будет импортирован пакет. myMain.py имеет следующий код:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from utils.Foo import foobar

print(foobar.getKey['A'])

__init__.py - пустой файл, а foobar.py имеет определение функции:

TEST_DICT = {
        'A': 'This is A',
        'B': 'This is B'
}

def getKey(letter):
    return TEST_DICT[letter]

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 25 января 2019

После попытки запустить код в myMain.py из интерпретации Python, я понял, что вызов функции был написан с неправильным синтаксисом. Вместо foobar.getKey['A'] вместо него должно быть foobar.getKey('A'), потому что мы вызываем функцию, а не объект словаря.

...