On Wed, May 29, 2019 at 2:57 PM Ricky Teachey <ri...@teachey.org> wrote:
> class HDL:
>     """Every new member of this namespace has signal behavior"""
>     def __setattr__(self, attr, value):
>         # note: if attr existed already,
>         # SignalBehavior.__set__ was called
>
>         # add attr as signal behavior
>         setattr(type(self), attr, SignalBehavior())
>         # SignalBehavior.__set__ will now be called
>         setattr(self, attr, value)

This doesn't seem to work, the first time you setattr on hdlns.x, it
will recursively doing so due to setattr(self, attr, value). I do
understand you need override __setattr__() to provide an on demand
signal creation, and you do need to call setattr() again to actually
activate the descriptor, so stack eventually overflows.

With a bit modification it can work, e.g. the last setattr(self, attr,
value) should explicitly invoke SignalBehavior().__set__() instead.
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to