output formatting for classes

Schüle Daniel uval at rz.uni-karlsruhe.de
Fri Mar 10 02:19:10 CET 2006


Russ wrote:
> I'd like to get output formatting for my own classes that mimics the
> built-in output formatting. For example,
> 
> 
>>>>x = 4.54
>>>>print "%4.2f" % x
> 
> 4.54
> 
> In other words, if I substitute a class instance for "x" above, I'd
> like to make the format string apply to an element or elements of the
> instance. Can I somehow overload the "%" operator for that? Thanks.
> 
> On an unrelated matter, I think the complex class in Python is too
> complex, so I plan to clean it up and implement it right. (just
> kidding, folks!)

yeah, i miss some things in complex implementation
for example c=complex()
c.abs = 2**0.5
c.angle = pi/2

should result in 1+1j :)

or c=complex(1,1)
print c.abs # should print 2**0.5
print c.angle # should print pi%2

i think one can implement it with properties

but to your question ...

 >>> class X(object):
...     def __float__(self):
...             return 1.0
...     def __long__(self):
...             return 10l
...     def __int__(self):
...             return 20
...     def __repr__(self):
...             return "i am"
...     def __str__(self):
...             return "I AM"
...     def __complex__(self):
...             return 1+1j
...
 >>> x=X()
 >>> int(x)
20
 >>> long(x)
10L
 >>> float(x)
1.0
 >>> str(x)
'I AM'
 >>> repr(x)
'i am'
 >>> print "%s -- %r" % (x,x)
I AM -- i am
 >>> complex(x)
(1+1j)
 >>>




More information about the Python-list mailing list