Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 17, 2011 02:05:21

indus
От:
Зарегистрирован: 2011-02-07
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

Переопределить print

Можно ли переопределить print и если да то как?
Хочется чтобы при вызове

print "Hello %s" % "World!"
вызывалась моя функция/метод/класс print



Офлайн

#2 Фев. 17, 2011 02:13:03

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Переопределить print

Нельзя.
Можно подменить sys.stdout, в который всё попадает.



Офлайн

#3 Фев. 17, 2011 04:19:41

indus
От:
Зарегистрирован: 2011-02-07
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

Переопределить print

Андрей Светлов
а что есть print? где можно найти его реализацию/определение?

Спасибо!



Офлайн

#4 Фев. 17, 2011 07:33:40

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Переопределить print

indus, Андрей Светлов прав, не проще ли stdout (это то, куда пишет print) перенаправить на свой сласс. Дело буквально одной строчки



Офлайн

#5 Фев. 17, 2011 10:16:32

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Переопределить print

indus, примерно то же, что и while или for.
Вам всё ещё так нужна реализация?



Офлайн

#6 Фев. 17, 2011 23:44:25

indus
От:
Зарегистрирован: 2011-02-07
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

Переопределить print

Андрей Светлов
уже нет. смирился с неизбежным =) существуют другие способы, в частности как тут упоминали перехват stdio. я сделал еще очевиднее (не факт что проще) - написал свою хх_print.



Офлайн

#7 Фев. 18, 2011 08:38:40

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Переопределить print

переопределите repr как вам нужно

class A:
def __init__(self,arg) :
self.arg = arg
def __repr__(self):
return 'value = %s'%self.arg

x = A(5)
print x



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version