[Tutor] get a module's own (top_level) dict?
Kent Johnson
kent37 at tds.net
Sun Nov 9 22:54:36 CET 2008
On Sun, Nov 9, 2008 at 3:42 PM, spir <denis.spir at free.fr> wrote:
> Thank you Lie & Kent, that's it. Excuse me, Lie, I answered too fast.
> Now, to answer Kent questions, there are several reasons why I wish to do
> that.
> These objects will be of a 'pattern' type that (unlike function, for
> instance), don't know how they're called. They need to hold their name to
> pass it to further objects (say, tokens) that will be generated according to
> these patterns, but who are not instances of the patterns. Actually, the
> pattern's name is a kind of token 'type'. You see what I mean?
No, not at all. Why can't you assign the pattern's name when you create it?
> Concretely, I need to instanciate object with a type specified by the
> pattern's name and init data given by the result of the parsing.
This can be done with a dict mapping pattern names to types. I don't
see how having a pattern know its own name helps here.
For example:
In [22]: class Foo:
....: def __init__(self, x):
....: print "Foo(%s)" % x
In [24]: class Bar:
....: def __init__(self, x):
....: print "Bar(%s)" % x
In [25]: types = dict(foo=Foo, bar=Bar)
In [26]: types['foo'](3)
Foo(3)
In [27]: types['bar'](42)
Bar(42)
> Also, I want to write the pattern --> name --> type --> object toolset in a
> general to be able to reuse it. Also, simply because I want it so!
> There will be many such names, too.
> Also: the patterns will actually be generated at runtime according to a
> config file -- and can also change at runtime (--> reload() grammar module),
> following user customization. So that I don't even know the names at design
> time.
How are you going to create all these named objects?
Kent
More information about the Tutor
mailing list