Функции с разными типами параметров

 
0
 
Python
ava
ecspertiza | 22.10.2011, 01:01
В питоне еще не силен, пытаюсь найти как определить допустим две ф-ции с одним именем ,но с разными типами параметров, объясню на примере (C++) если никто не против :)

допустим хочу определить ф-цию loadUserInfo() , могу сделать загрузку информации о пользователе по id или по его имени, стало быть в плюсах я написал так бы



void loadUserInfo(int user_id){
блаблабла
}

void loadUserInfo(string user_id){
блаблабла
}



и стало быть при вызове ф-ции loadUserInfoв зависимости от типа параметра будет вызываться или первая ф-ция или вторая. Вопрос как это можно реализовать в питоне

нашел такой способ


def loadUserInfo(user)
if type(user) == 'int'
loadInfoFromId()
elif type(user) == 'string'
loadInfoFromName()


но может можно элегантнее ?
Kommentare (3)
ava
Gunjy | 22.10.2011, 20:12 #
Ну можно вынести проверку типа за пределы функции, то есть:


def loadInfoFromId(user):
pass

def loadInfoFromName(user):
pass

if type(user) == int:
loadInfoFromId(user)
elif type(user) == str:
loadInfoFromName(user)


А вообще, насколько мне известно две функции с одинаковым именем в Python создать нельзя,
точнее при создании второй функции с таким же именем как и первая, вы просто переопределите первую функцию.
ava
Backward | 23.10.2011, 03:37 #
Можно воспользоваться этим рецептом
ava
cutwater | 23.10.2011, 12:20 #
Backward, можно, но это будет unpythonic.

ecspertiza, Если Вам нужна перегрузка ф-ций в python, значит вы делаете что-то не так.
Попробуйте конкретизировать задачу.

Исходя из Вашего кода, я бы предложил следующий вариант


def load_info_from_id(id): # Use PEP8
pass
def load_info_from_name(name): pass

def load_user_info(id=None, name=None):
assert id is not None and name id is not None

if id is not None:
load_info_from_id(id)
elif name is not None:
load_info_from_name(name)


Хотя это тоже не лучший вариант, вам стоит пересмотреть подход к проектированию интерфейсов, перегрузка зачастую не нужна в python.
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden