3 ms·
Does it lazy-create leaf dicts on access? It would be preferable if they were only created on assignment, and failed if it’s just a get. For example, if I cal
by gorgoiler 3y ago
Does it lazy-create leaf dicts on access? It would be preferable if they were only created on assignment, and failed if it’s just a get.
For example, if I call config.usors.adminn.naem I’d like it to fail loud and fast to point out the typos.
- Izkata 3y agoCode looks like it's on access, but I didn't test it.
- kzrdude 3y agoI don't think it's possible in Python to detect the difference between access or write (when it's nested attributes).
- heisenzombie 3y agoYeah it does. If you do: x = dd() print(x.tyypo.a.b) you'll get "DotDict()" The problem is that an object can't know whether you're getting a node that you're later going to assign a leaf to... or whether you're getting the node because you want to get the node. x = dd() x.a.b.c = "Foo" is equivalent to: x = dd() y = x.a.b y.c = "Foo" So "x.a.b" can't raise an exception. Now, it's python, so you can do unholy things to make pretty much anything work. But I think it would be ugly.