Hi! I'm in the position that I have a bunch of classes defined before hand and then in some special circumstances I need to dynamically create a class that has a number of the static classes as parents.
So I thought I could use classobj() from the new module, it seem exactly what I wanted. But, it doesn't perform as I expected. I've made an extremely simple program to try to show what I mean and what I expected. It's attached to this mail. So, how should I have done it ? -- Roland
#!/usr/bin/env python class A(object): def __init__(self): if "list" in self.__dict__.keys(): self.list.extend(["a","b","c"]) else: self.list = ["a","b","c"] self.list.sort() class B(object): def __init__(self): if "list" in self.__dict__.keys(): self.list.extend(["x","y","z"]) else: self.list = ["x","y","z"] self.list.sort() class C(B): def __init__(self): B.__init__(self) if "list" in self.__dict__.keys(): self.list.extend(["0","1","2"]) else: self.list = ["0","1","2"] self.list.sort() class X(C): def __init__(self): C.__init__(self) if "list" in self.__dict__.keys(): self.list.extend(["9","8","7"]) else: self.list = ["9","8","7"] self.list.sort() __test__ = { "a":""" >>> from new import classobj >>> c = C() >>> c.list ['0', '1', '2', 'x', 'y', 'z'] >>> x = X() >>> x.list ['0', '1', '2', '7', '8', '9', 'x', 'y', 'z'] >>> D = classobj("D",(A,C),{}) >>> d = D() >>> d.list ['0', '1', '2', '7', '8', '9', 'x', 'y', 'z'] >>> E = classobj("E",(C,A),{}) >>> e = E() >>> e.list ['0', '1', '2', '7', '8', '9', 'x', 'y', 'z'] """} if __name__ == "__main__": import doctest doctest.testmod()
-- http://mail.python.org/mailman/listinfo/python-list