Okay, ik probeer een layered output buffer class te schrijven. Het is een list van StringIO() objecten, sys.stdout wordt verbonden aan de laatste StringIO() in de list en sys.__stdout__ zit in list[0]. De class is ongeveer 40 LOC en staat hier.
Ik heb nog niet extreem veel ervaring met Python (deze class is deels tot stand gekomen met behulp van dit topic), dus ik hoop dat dit niet een al te domme kwestie is, maar de class wil dus niet werken (d0h!). Wanneer ik hem probeer te debuggen, gebeuren er dingen die ik niet begrijp:
manuzhai@supaari manuzhai $ python
Python 2.3.4 (#1, Oct 21 2004, 08:02:54)
[GCC 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> from xmendes.output import OutputBuffer
>>> ob = OutputBuffer()
>>> print 'stuffy'
stuffy
>>> ob.start()
>>> print 'stuffy'
>>> print >> sys.__stdout__, ob.get()
None
>>> print >> sys.__stdout__, ob.outputs[ob.level].getvalue()
stuffy
>>>
En dat terwijl get() er zo uit ziet:
def get(self):
"""Get the contents of the current layer."""
self.outputs[self.level].getvalue()
Zou wat mij betreft dezelfde output moeten geven, maar nee. Kan iemand uitleggen wat hier gebeurt?
Ik heb nog niet extreem veel ervaring met Python (deze class is deels tot stand gekomen met behulp van dit topic), dus ik hoop dat dit niet een al te domme kwestie is, maar de class wil dus niet werken (d0h!). Wanneer ik hem probeer te debuggen, gebeuren er dingen die ik niet begrijp:
manuzhai@supaari manuzhai $ python
Python 2.3.4 (#1, Oct 21 2004, 08:02:54)
[GCC 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> from xmendes.output import OutputBuffer
>>> ob = OutputBuffer()
>>> print 'stuffy'
stuffy
>>> ob.start()
>>> print 'stuffy'
>>> print >> sys.__stdout__, ob.get()
None
>>> print >> sys.__stdout__, ob.outputs[ob.level].getvalue()
stuffy
>>>
En dat terwijl get() er zo uit ziet:
def get(self):
"""Get the contents of the current layer."""
self.outputs[self.level].getvalue()
Zou wat mij betreft dezelfde output moeten geven, maar nee. Kan iemand uitleggen wat hier gebeurt?
Rustacean