Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 17, 2007 14:30:15

fMad
От:
Зарегистрирован: 2007-08-09
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

перегрузка функций

Вот класс
class Var:
def field_add(self,name,value,type):
t=name,value,type
self.field.append(t)

def field_add(self,name,value):
self.field_add(name,value,“text”)

вот так использую, потому что всегда так перегружал С++ функции (если не считать параметры по умолчанию)
как это делает путём?
var=Var()
var.field_add('name',name)
var.field_add('value',cfg.get(name))
var.field_add('cmd',“add”,“hidden”)

тут с параметрами по умолчанию какие то непонятки



Офлайн

#2 Авг. 17, 2007 14:46:49

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

перегрузка функций

Сигнатура функции в Python(а также php, perl и тд) включает только имя ф-ции, а не имя функции, тип возвращаемого значения и список аргументов с указанием их типов как в C++ или Java, например.
http://citforum.ru/programming/python/multidispatch/
http://www.artima.com/weblogs/viewpost.jsp?thread=155514



Офлайн

#3 Авг. 26, 2007 21:21:32

-=<fantom>=-
От:
Зарегистрирован: 2006-08-12
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

перегрузка функций

Перегрузка в Pythone происходит элементарно.
Пример возвращения строкового объекта:

class Chat:
def __str__(self):
return str(self.chat)

string='bla-bla-bla'+chat

Аналогично __add__, __mul__, __repr__ и ещё много чего.
Но имей в виду - перегрузка это сразу тормоз. Раз эдак в пять. Время тратится на разбор. В отличии от Си++.



Офлайн

#4 Авг. 27, 2007 00:22:11

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

перегрузка функций

-=<fantom>=-
Это пример перегрузки стандартных операторов. С перегрузкой функций дела обстоят сложнее.



Офлайн

#5 Авг. 27, 2007 11:49:09

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

перегрузка функций

-=<fantom>=-
Но имей в виду - перегрузка это сразу тормоз. Раз эдак в пять.
можно результаты профайлера?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version