| Кирилл Кирсанов ( @ 2009-05-05 00:40:00 |
| Entry tags: | python |
Рабоче-хоилворное.
Под впечатлением http://community.livejournal.com/ru_lamb
def ATypes(typeName, typeArgs):
if type(typeArgs) == type(""):typeArgs = (typeArgs,)
def creator(self, *args, **kwargs):
i = 0
for arg in typeArgs:
if kwargs.has_key(arg):
self.__dict__[arg] = kwargs[arg]
del kwargs[arg]
else:
self.__dict__[arg] = args[i]
i += 1
globals()[typeName] = type(typeName, (), {'__init__': creator})
#Теперь тестим:
ATypes('List', ('head', 'Tail'))
ATypes('Tail', 'List')
s = List(1, List(2, None))
if isinstance(s.Tail, List):
print s.Tail.head
ATypes('BTree', ('LH', 'RH', 'data'))
ATypes('LH', 'BTree')
ATypes('RH', 'BTree')
MyTree = BTree(None, BTree(None, None, 2), 1)
if isinstance(MyTree , BTree) and isinstance(MyTree.RH , BTree):
print MyTree.RH.data