[Python-Dev] Re: Printing objects on files (original) (raw)
Ka-Ping Yee ping@lfw.org
Wed, 3 May 2000 02:51:30 -0700 (PDT)
- Previous message: [Python-Dev] Printing objects on files
- Next message: [Python-Dev] Re: [I18n-sig] Unicode debate
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wed, 3 May 2000, Ka-Ping Yee wrote:
Fantasizing about other useful kinds of state beyond "encs" and "floatprec" ("listmax"? "ratprec"?) and managing this namespace is left as an exercise to the reader.
Okay, i lied. Shortly after writing this i realized that it is probably advisable for all such bits of state to be stored in stacks, so an interface such as this might do:
def push(self, key, value):
if not self.state.has_key(key):
self.state[key] = []
self.state[key].append(value)
def pop(self, key):
if self.state.has_key(key):
if len(self.state[key]):
self.state[key].pop()
def get(self, key):
if not self.state.has_key(key):
stack = self.state[key][-1]
if stack:
return stack[-1]
return None
Thus:
>>> print 1/3
0.33333333333333331
>>> sys.stdout.push("float.prec", 6)
>>> print 1/3
0.333333
>>> sys.stdout.pop("float.prec")
>>> print 1/3
0.33333333333333331
And once we allow arbitrary strings as keys to the bits of state, the period is a natural separator we can use for managing the namespace.
Take the special case for Unicode out of the file object:
def printout(self, x):
x.__print__(self)
self.write("\n")
and have the Unicode string do the work:
def __printon__(self, file):
file.write(self.encode(file.get("unicode.enc")))
This behaves just right if an encoding of None means ASCII.
If mucking with encodings is sufficiently common, you could imagine conveniences on file objects such as
def __init__(self, filename, mode, encoding=None):
...
if encoding:
self.push("unicode.enc", encoding)
def pushenc(self, encoding):
self.push("unicode.enc", encoding)
def popenc(self, encoding):
self.pop("unicode.enc")
-- ?!ng
- Previous message: [Python-Dev] Printing objects on files
- Next message: [Python-Dev] Re: [I18n-sig] Unicode debate
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]