开发者

Dynamically building up types in python

Suppose I am building a composite set of types:

def subordinate_type(params):
   #Dink with stuff
   a = type(myname, (), dict_of_fields)
   return a()

def toplevel(params)
    lots_of_types = dict(keys, values)
    myawesomedynamictype = type(toplevelname, (), lots_of_types)

    #Now I want to edit some of the values in myawesomedynamictype's 
    #lots_of_types. 

    return myawesomedynamictype()

In this particular case, I want a reference to the "typeclass" myawesomedynamictype inserted into lots_of_types.

I've tried to iterate through lots_of_types and set it, supposing that the references were pointed at the same thing, but I found that the myawesomedynamictype got corrupted and lost its fields.

The problem I'm trying to solve is that I get values related to the type开发者_运维技巧 subordinate_type, and I need to generate a toplevel instantiation based on subordinate_type.


This is an ancient question, and because it's not clear what the code is trying to do (being a code gist rather than working code), it's a little hard to answer.

But it sounds like you want a reference to the dynamically created class "myawesomedynamictype" on the class itself. A copy of (I believe a copy of) the dictionary lots_of_types became the __dict__ of this new class when you called type() to construct it.

So, just set a new attribute on the class to have a value of the class you just constructed; Is that what you were after?

def toplevel(params)
    lots_of_types = dict(keys, values)
    myawesomedynamictype = type(toplevelname, (), lots_of_types)
    myawesomedynamictype.myawesomedynamictype = myawesomedynamictype
    return myawesomedynamictype()
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜