I see python3.5 accepted PEP465 adding a new infix operator for matrix (@, @=), which made matrix formula's much less painful to read in Python. There are still more use cases like this in other areas.
While looking at Chisel (a hardware construction language build on top of scala), where you can create arbitrary new operators e.g. := used for specific purposes, I realize there is no way to overload the behavior of the assignment operator in python unless new operators are introduced. In the python world, e.g. MyHDL (Hardware description language in python) uses something like signal.next = 5 ... which is 5 more chars to type (.next part) for every single signal assignment, and assign new value to a signal is the one most commonly used operations in hardware design world. The .next could have been saved by using python descriptors but now you have to type something like "obj.signal = 5" instead of "signal = 5", and it does not work if you want a local signal, where signal = 5 will always make signal to be 5, instead of feeding 5 into this signal. I have experimented by adding two new python operators, left arrow: <- and right arrow ->, which users can define their behaviors. and it still looks like kind of the non-blocking assignment operators in hardware description languages (e.g. verilog <=). Also it could be used to build data flows like a -> b -> c -> d -> ... Another side effect is this "__arrow__" call can fully replace descriptors and allow you to generate descriptor-like behavior on object initialization time instead of class definition time, e.g. in __init__(self,...) to dynamically create self.abc like fields which can be then accessed like obj.abc <- 3 etc. This currently with descriptors can only be achieved elegantly by using meta classes. This is the first time I am writing to python-ideas list, just want to hear what you guys think, should python actually allow operators to be first class citizens? does the arrow operator makes sense at all? Any other better ways to redefine the "assignment" behavior by user? Thanks, Yanghao _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/