On 2 Aug 2007, at 03:01, Talin wrote: > In general, you can think of the difference between format > specifier and > alignment specifier as: > > Format Specifier: Controls how the value is converted to a > string. > Alignment Specifier: Controls how the string is placed on the > line. > > Another change in the behavior is that the __format__ special > method can > only be used to override the format specifier - it can't be used to > override the alignment specifier. The reason is simple: __format__ is > used to control how your object is string-ified. It shouldn't get > involved in things like left/right alignment or field width, which are > really properties of the field, not the object being printed.
Say I format numbers in an accounting system and, in the absence of being able to colour my losses in red, I choose the parentheses sign representation style (). In this case I'd like to be able to have my numbers align thus: 1000 200 (3000) 40 (50000) I.e. with the bulk of the padding applied before the number but conditional padding after the number if there is no closing bracket. If the placement is done entirely outside the __format__ method then you to make sure that it is documented that, when using the () style of sign indicator, positive numbers need to have a space placed either side, e.g. -100 goes to "(100)" but +100 does to " 100 ". If you do this then it should all come out in the wash, but I think it deserves a note somewhere. Cheers, Nicko _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com