I look forward to seeing the working example. Hopefully it's clear already, but: I don't think anybody is yet claiming the descriptor approach is the "correct" or "best" answer for you. But it will help a lot to demo what you want, and it also allows you to use your first choice operator, which is =.
> Problem remains that you cannot pass hdlns.x/y around, x and y are > really the things you want to pass around. You can pass hdlns in this > case, but the receiving object has to figure out which signal (x or y) > to use. > If you can pass x around, you can certainly pass hdlns.x around, or something shorter if you prefer-- ns.x, perhaps. The problem of: "the receiving object has to figure out which signal (x or y) to use" seems easily addressed by creating a Signal class that knows how to return the Right Thing™ when doing math: from numbers import Real # or whatever number abc is appropriate class Signal(Real): # override all mathematical operations And modify the __set__ method of the SignalBehavior descriptor so it stores a Signal: class SignalBehavior: ... def __set__(self,inst,value): self.inst_dict[inst] = value if isinstance(value,Signal) else Signal(value) Now any math operation you care to do can result in whatever you wish it to be: >>> ns = HDL() >>> ns.x = 1 >>> ns.y = ns.x / 2 >>> ns.z = 8 / ns.y
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/