On 2017-10-29 02:57 PM, Brendan Barnwell wrote:
On 2017-10-29 04:44, Soni L. wrote:
And this is how you miss the whole point of being able to dynamically
add/remove arbitrary components on objects you didn't create, at
runtime.
Someone gave me this code and told me it explains what I'm trying to do:
https://repl.it/NYCF/3
class T:
pass
class C:
pass
c = C()
#c.[T] = 1
c.__dict__[T] = 1
Again, can you please explain why you want to write c.[T]? What do
you intend that to *do*? Your commented line seems to indicate you
want it to do what `c.__dict__[T]` does, but you can already do that
with `setattr(c, T, 1)`. Or you can just give c an attribute that's a
dict, but has an easier-to-type name than __dict__, so you can do
`c.mydict[T]`. What is the specific advantage of `c.[T]` over these
existing solutions?
Hmm... Why can't we just allow empty identifiers, and set a default
handler for empty identifiers that implements the proposed ECS?
But the basic idea is to indicate something at the call site, namely
that T is a contract and the object returned should respect that
contract and any function calls should pass the original object as an
argument. (I personally don't like how Python treats o.m() (has self)
the same as o.f() (no self) syntax-wise, either.)
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/