[Python-ideas] objects aware of being bound to a name
Carl M. Johnson
cmjohnson.mailinglist at gmail.com
Sun Jun 5 10:00:55 CEST 2011
This is in principle doable with metaclasses (like everything else :-D)...
Here's what I whipped up in the console:
>>> class MagicDict(dict):
... def __setitem__(self, key, value):
... print("Binding key: {} to value: {}".format(key, value))
... if hasattr(value, "__bind__"):
... value.__bind__(key)
... super().__setitem__(key, value)
...
>>> class Bindable:
... def __bind__(self, key):
... print("{} was bound to {}".format(self, key))
...
>>> class MetaBinding(type):
... @classmethod
... def __prepare__(metacls, name, bases):
... return MagicDict()
...
>>> class BindingReports(metaclass=MetaBinding):
... a = 1
... b = Bindable()
... c = "blah"
...
Binding key: __module__ to value: __main__
Binding key: a to value: 1
Binding key: b to value: <__main__.Bindable object at 0x100603b50>
<__main__.Bindable object at 0x100603b50> was bound to b
Binding key: c to value: blah
Not sure how useful this is. I don't like using the term "class" for things
where you're not really trying to bundle together methods or create a type,
just change the way values get bound.
-- Carl Johnson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20110604/40db7ff3/attachment.html>
More information about the Python-ideas
mailing list