Проблема со строкой 5 состоит в том, что вы набрали Mbo
с заглавной буквы - это означает, что вы ссылаетесь на импортированный класс psdi.mbo.Mbo
. Но точка запуска передаст в сценарий неявную переменную с именем mbo
, и mbo
будет экземпляром (подклассом) Mbo
.
Python методов - функций в классах, и они принимают self
в качестве первого параметра. Итак, в mbo.getMboSet("RELATIONSHIPNAME")
, Python собирается внутренне преобразовать это getMboSet(mbo, "RELATIONSHIPNAME")
. Ссылаясь на класс вместо экземпляра класса, вы фактически пропускали этот параметр self
. И именно поэтому вам сказали, что getMboSet()
ожидал "2-4 аргумента", когда JavaDocs для Mbo.getMboSet()
показывают перегрузки этого метода, которые принимают 1, 2 или 3 аргумента.
К вашему сведению: Код, который вы вставили, после того, как вы измените Mbo
на mbo
в строке 5, вам не понадобится ни одна из ваших строк from ... import
. Они нужны только в том случае, если вы напрямую ссылаетесь на классы, как это делала строка 5 по ошибке.