Ваш заголовок немного сбивает с толку, поскольку вы действительно можете передать метод. В Python функции первого класса, что означает, что вы можете передавать их как любое значение.
Тем не менее, ваш текст показывает, что вы хотите сделать что-то еще.
Python действительно возвращает несколько значений как одно значение, кортеж значений.
return 1, 2
действительно так же, как
return (1, 2)
Однако, если вам нужно распаковать эти значения, как в вашем случае, есть несколько способов добиться этого.
Вы можете распаковать их в переменные:
usn, psw = myObject.getAccount()
Или вы можете «развернуть» их прямо в вызов функции:
myModule.logIn(*myObject.getAccount())
Для этого необходимо, чтобы количество аргументов было таким же, как и размер кортежа (для функции с двумя аргументами требуется кортеж (x, y)
)
Если вместо этого вы хотите передать метод, вы можете это сделать, но вам нужно быть осторожным, чтобы не вызывать его:
def logIn(self, a):
usn, psw = a()
# do stuff
logIn(myObject.getAccount)