
On Mon, Jun 23, 2014 at 10:06 PM, Stefano Borini <stefano.borini@ferrara.linux.it> wrote:
At work we use a notation like LDA[Z=5] to define a specific level of accuracy for our evaluation. This notation is used just for textual labels, but it would be nice if it actually worked at the scripting level, which led me to think to the following: at the moment, we have the following
class A: ... def __getitem__(self, y): ... print(y) ... a=A() a[2] 2 a[2,3] (2, 3) a[1:3] slice(1, 3, None) a[1:3, 4] (slice(1, 3, None), 4)
I would propose to add the possibility for a[Z=3], where y would then be a dictionary {"Z": 3}.
The obvious way to accept that would be to support keyword arguments, and then it begins looking very much like a call. Can you alter your notation very slightly to become LDA(Z=5) instead? Then you can accept that with your class thus: class A: def __call__(self, Z): print(Z) Or you can accept it generically with keyword arg collection: class A: def __call__(self, **kw): print(kw)
a=A() a(Z=3) {'Z': 3}
Requires a small change to notation, but no changes to Python, ergo it can be done without waiting for a new release! ChrisA