method gets overwritten?!
Alexander Skwar
usenet-posting.zu.askwar at spamgourmet.com
Fri Mar 14 07:30:48 EST 2003
Hi!
Consider the following class:
import gettext
class xhcClass:
def untranslated(self, text):
print "untranslated\n"
return text
def txt(self, txt):
print "txt\n"
return _(txt)
def __init__(self):
print "__init__\n"
try:
t = gettext.translation(domain = 'xhc',
localedir = 'locale',
languages = ["de"])
t.install()
except IOError:
import __builtin__
__builtin__.__dict__['_'] = self.untranslated
Now I do:
>>> x = xhcClass()
__init__
>>>
>>> print _
<bound method GNUTranslations.gettext of <gettext.GNUTranslations
instance at 0x008BB658>>
>>> print x.txt("Exit")
txt
Beenden
>>> s = x.txt("Exit")
txt
>>> s
'Beenden'
>>> print _
Beenden
>>> print x.txt("Exit")
txt
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 7, in txt
TypeError: 'str' object is not callable
Uhm, why do I get this error? Why is _ overwritten with a string? _ got
defined by t.install() in xhcClass.__init__(). And it got overwritten,
as soon as I executed "s" (on a line by itself).
What's happening here?
Python 2.2.2 (#37, Oct 14 2002, 17:02:34) [MSC 32 bit (Intel)] on win32
and
Python 2.2.1 (#1, Aug 30 2002, 12:15:30)
[GCC 3.2 20020822 (Red Hat Linux Rawhide 3.2-4)] on linux2
Alexander Skwar
--
BOFH excuse #387:
Your computer's union contract is set to expire at midnight.
More information about the Python-list
mailing list