unbound method должен быть вызван с экземпляром X в качестве первого аргумента (вместо этого используется экземпляр X)

Я получаю следующее сообщение об ошибке в своем Python 2-Code (2.7.9): TypeError: unbound method issueTransitionJIRA () должен быть вызван с экземпляром AccessCd в качестве первого аргумента (вместо этого был получен экземпляр AccessCd)

Таким образом, python жалуется, что 1-й аргумент должен быть экземпляром класса, который я фактически передал.?! Конечно, я что-то пропустил, но пока не понял, искал другие ответы на похожие сообщения об ошибках … Может ли кто-нибудь мне помочь или объяснить? Большое спасибо!

Вот моя структура кода:

main-file w32AccessCd.py :

import transitionStatusTracking class AccessCd: def __init__(self): # ... self.main() def main(): tST = transitionStatusTracking.tStateTrack(self) tST.setup() # ... def issueTransitionJ(self, issuekey, workflowcmd): # ... return True accesscd = AccessCd() 

module-file transitionStatusTracking.py :

 from w32AccessCd import AccessCd class tStateTrack: def __init__(self, ACCESSCD): self.ACCESSCD = ACCESSCD def setup(self): AccessCd.issueTransitionJ(self.ACCESSCD, self.key, "error") 

Ошибка:

 TypeError: unbound method issueTransitionJ() must be called with AccessCd instance as first argument (got AccessCd instance instead) 

  • Найдите слово и замените всю строку, содержащую слово в файле на Python, используя fileinput
  • Python Pandas: удалять записи в зависимости от количества вхождений
  • Захват экрана с помощью OpenCV и Python-2.7
  • Возможно ли изменить переменную в python, которая находится во внешней, но не глобальной области?
  • «is» оператор неожиданно ведет себя с поплавками
  • сельдерей: демоническим процессам не разрешается иметь детей
  • Замена Python StringIO, которая работает с байтами вместо строк?
  • Проблемы с пространством имен Python с параллельным ipython
  • One Solution collect form web for “unbound method должен быть вызван с экземпляром X в качестве первого аргумента (вместо этого используется экземпляр X)”

    Когда Python запускает скрипт, файл хранится в пространстве имен __main__ . Импортируя его в качестве модуля, с другой стороны, помещает его в пространство имен <name-of-module> .

    Вы используете w32AccessCd.py в качестве основного скрипта, определяя __main__.AccessCd .

    Затем вы импортируете transitionStatusTracking , который поворачивается и импортирует w32AccessCd . Это создает вторую копию этого модуля, как пространство имен w32AccessCd . Теперь у w32AccessCd.AccessCd есть w32AccessCd.AccessCd . Это отдельный класс и отличается от другого класса.

    Что будет дальше:

    • accesscd = AccessCd() создает экземпляр типа __main__.AccessCd .
    • __main__.AccessCd.__init__ вызывает __main__.AccessCd.main .
    • __main__.AccessCd.main создает экземпляр transitionStatusTracking.tStateTrack , передавая __main__.AccessCd .
    • Вы вызываете метод transitionStatusTracking.tStateTrack.setup , который пытается использовать метод w32AccessCd.AccessCd.issueTransitionJ() с __main__.AccessCd , и вызов завершается с ошибкой.

    У вас есть три варианта исправить это:

    • В модуле transitionStatusTracking импортируйте из __main__ :

       from __main__ import AccessCd 

      и чтобы сделать работу с циклическим импортом, вам придется переместить строку import transitionStatusTracking ниже class AccessCd , иначе класс еще не определен. В качестве альтернативы используйте import __main__ и ссылку __main__.AccessCd в свой код.

      Теперь у вас такой же класс.

    • Создайте третий файл для создания сценариев; скажем main.py , с:

       from w32AccessCd import AccessCd accesscd = AccessCd() 

      и удалите accesscd = AcessCd() из модуля w32AccessCd . Теперь будет w32AccessCd.AccessCd только w32AccessCd.AccessCd класса w32AccessCd.AccessCd .

    • Вызовите метод напрямую, а не unbound:

       def setup(self): self.ACCESSCD.issueTransitionJ(self.key, "error") 

      Это гарантирует, что метод привязан к правильному экземпляру, и уже не имеет значения, откуда пришел класс.

    Interesting Posts

    Каков стандартный способ добавления N секунд в datetime.time в Python?

    Python: вызов подпроцесса с оболочкой = False не работает

    Линейная регрессия с matplotlib / numpy

    Как получить миллисекундные и микросекундные временные метки в Python

    Извлечь результаты поиска Google

    Как получить планировщик Cron в Python?

    Предотвращение импорта кода Python из определенных модулей?

    Простой способ измерения времени выполнения ячейки в ноутбуке ipython

    Объект Python threading self._stop () «Событие» не может быть вызван

    Django: отключить вывод консольных сообщений http-ответов

    Какие числа вы можете передать как многословие при запуске Python Unit Test Suites?

    Kivy 1.9.0 Пакет Windows KeyError: 'rthooks'

    как сделать мой скрипт python легко переносимым? или как скомпилировать в двоичные файлы со всеми зависимостями модулей?

    Какие языки программирования можно использовать на Android Dalvik?

    Логарифмическая доходность в рамке данных pandas

    Python - лучший язык программирования в мире.