PowerBI позволяет сделать это довольно легко, просто изменив форматирование на «показать значение в процентах от общего итога», как показано на рисунке ниже.
Если __len__
возвращает длину sys.maxsize
, len()
повысит исключение. Это не верно для вызова __len__
непосредственно. (На самом деле Вы могли возвратить любой объект из __len__
который не будет пойман, если это не пройдет len()
.)
Какое ускорение Вы видели? Я не могу предположить, что это было примечательно, было это?
Из http://mail.python.org/pipermail/python-list/2002-May/147079.html
в определенных ситуациях нет никакого различия, но использующий len () предпочтен по паре причин.
во-первых, не рекомендуется пойти, звоня
__methods__
самостоятельно, они предназначены, чтобы использоваться другими частями Python.
len()
будет работать над любым типом объекта последовательности (lists
,tuples
, и все).__len__
будет только работать над экземплярами класса с a__len__
метод.
len()
возвратит более соответствующее исключение на объектах без длины.
Я думаю, что ответ - то, что это будет всегда работать - согласно документам Python:
__len__(self):
Названный для реализации встроенной функции len (). Должен возвратить длину объекта, целое число> = 0. Кроме того, объект, который не определяет a __nonzero__()
метод и чей __len__()
нуль возвратов метода считается ложью в булевом контексте.
По словам Mark Pilgrim, это похоже нет. len(someObj)
совпадает с someObj.__len__()
;
Удачи!