On 7/14/2011 2:44 AM Knacktus said...
Hi guys,
I've got the following (not working) code:
class Attribute(object):
def __init__(self, attribute_name, att_type_name):
self._attribute_name = attribute_name
try:
self._attribute_type = globals()[att_type_name]
except KeyError:
self._attribute_type = getattr(globals()["__builtins__"],
att_type_name)
def __get__(self, obj, obj_type):
return getattr(obj, self._attribute_name)
def __set__(self, obj, value):
if isinstance(value, self._attribute_type):
setattr(obj, self._attribute_name, value)
else:
raise ItemTypeException(self._attribute_type, type(value))
class BaseItem(object):
ident = Attribute("ident", "int")
owner = Attribute("owner", "str")
item = Attribute("item", "BaseItem")
if __name__ == "__main__":
print "About to create an item"
test = BaseItem()
print "OK"
The problem is that the descriptors are created when the module is
evaluated. But at this time the class BaseItem is not known yet. Any ideas?
You want to embed an instance of a class as an attribute of the same
class? Does this help:
class BaseItem(object):
ident = Attribute("ident", "int")
owner = Attribute("owner", "str")
BaseItem.item = Attribute("item", "BaseItem")
Emile
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor