2012-04-09 3 views
0

Я даже не знаю, возможно ли это.Как я могу связать встроенные функции python?

Я хочу сделать что-то вроде:

>>> foo = float 
>>> x = foo('2') 
>>> x 
2 

Но когда я пытаюсь это я получаю объект типа в обув:

>>> foo = float 
>>> foo 
<type 'int'> 

Я хочу, чтобы сохранить структуру как объект, который содержит правильный функцию для вызова при преобразовании значений, которые необходимо прочитать из файла.

Заранее благодарим за любую помощь.

+0

Это очень странно. Я просто набрал это и получил ожидаемый результат. (Обратите внимание, что в вашем первом примере 'x' должен быть' 2.0', а не '2'.) – Taymon

+3

Почти наверняка это связано с тем, что float отскакивает до int. – DSM

+0

@ Теймон спасибо, я не знаю, что я делаю, ты совершенно прав. – pablete

ответ

1

Это, безусловно, возможно; идентификаторы для встроенных компонентов ничем не отличаются от любых других идентификаторов, и нет причин, по которым вы не можете привязывать свои собственные идентификаторы к тем же объектам.

Если вы не получаете ожидаемых результатов, проверьте и убедитесь, что вы случайно не отскочили идентификаторы к другим значениям.

-1

Вы можете просто связать их. Но это не является целесообразным, потому что ваше переопределение поведения по умолчанию с чем-то другим и функциями, которые вы полагаетесь на поведение по умолчанию, неожиданно нарушилось. Так что не делай этого!

>>> foo = float 
>>> bar = int 
>>> foo('2') 
2.0 
>>> bar('2') 
2 
>>> type(foo) 
<type 'type'> 
>>> type(bar) 
<type 'type'> 
>>> 
+2

Вы должны быть немного более ясны относительно того, что не рекомендуется ... выполнение 'foo = int' в порядке (я думаю ... Я уверен, что это делается в' optparse, argparse, ConfigParser' ...), где «тип» передается в качестве аргумента для различных функций. Однако выполнение 'int = float' - определенно плохая идея. – mgilson

+0

-1 Опираясь на поведение по умолчанию 'float'? ОП не меняет свое поведение. И 'foo' не имеет поведения по умолчанию ... –

+0

John Machin - Да, я вижу это. Извините, я смутился! –

Смежные вопросы