Может мусорное ведро () быть перегруженным как октябрь () и шестнадцатеричное число () в Python 2.6?

Вы можете ввести свой HTML-код непосредственно в атрибут Title и затем просто вызвать следующее:

$(document).tooltip({
  content: function (callback) {
     callback($(this).prop('title'));
  }
});

Таким образом, ваш HTML-код отображается вместо экранированного и буквально написанного.

14
задан Scott Griffiths 6 July 2009 в 15:59
поделиться

4 ответа

I think the short answer is 'No, bin() can't be overloaded like oct() and hex().'

As to why, the answer must lie with Python 3.0, which uses __index__ to overload hex(), oct() and bin(), and has removed the __oct__ and __hex__ special functions altogether.

So the Python 2.6 bin() looks very much like it's really a Python 3.0 feature that has been back-ported without much consideration that it's doing things the new Python 3 way rather than the old Python 2 way. I'd also guess that it's unlikely to get fixed, even if it is considered to be a bug.

7
ответ дан 1 December 2019 в 13:09
поделиться

Функция bin получает свое значение от функции объекта __ index __ . Итак, для объекта вы можете определить значение, преобразованное в двоичное, но не можете определить формат строки.

1
ответ дан 1 December 2019 в 13:09
поделиться

You could achieve the same behaviour as for hex and oct by overriding/replacing the built in bin() function with your own implementation that attempted to call bin on the object being passed and fell back to the standard bin() function if the object didn't provide bin. However, on the basis that explicit is better than implicit, coding your application to depend on a custom version of bin() is probably not a good idea so maybe just give the function a different name e.g.

def mybin(n):
    try:
        return n.__bin__()
    except AttributeError:
        return bin(n)

As for why the inconsistency in the interface, I'm not sure. Maybe it's because bin() was added more recently so it's a slight oversight?

0
ответ дан 1 December 2019 в 13:09
поделиться

Как вы уже обнаружили, вы не можете переопределить bin () , но похоже, что вам это не нужно. Вам просто нужно двоичное значение с нулями. К сожалению, в python 2.5 и более ранних версиях вы не могли использовать "% b" для обозначения двоичного файла, поэтому вы не можете использовать оператор форматирования строки "%" для достижения желаемого результата.

К счастью, python 2.6 предлагает то, что вы хотите, в виде нового метода str.format () . Я считаю, что именно этот бит линейного шума - это то, что вы ищете:

>>> '{0:010b}'.format(19)
'0000010011'

Синтаксис этого мини-языка находится в разделе « мини-язык спецификации формата » в документации. Чтобы сэкономить вам время, я объясню строку, которую я использую:

  1. нулевой параметр (т.е. 19 ) должен быть отформатирован,
12
ответ дан 1 December 2019 в 13:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: