[Bf-committers] Idea: deprecate the attribute access for user properties in the BGE
blender at erwincoumans.com
blender at erwincoumans.com
Mon May 25 19:51:40 CEST 2009
-1, it will make writing scripts very ugly.
I rather would like to leave all options available to the user, and let them
choose what they prefer, including the original methods.
Thanks,
Erwin
Campbell Barton writes:
> +1, practically this isn't a very bug change to 2.49
> it only means adding a warning since both access methods are currently
> supported.
>
> Wasn't sure if we should deprecate attribute style access because I
> taught users would complain, interesting ZanQdo and yourself asked for
> this change separately, Blengine is ok about it too (as an example of
> a BGE user who isn't a total python/correctness pendent :) ).
>
> On 5/25/09, José Ignacio <jose.cyborg at gmail.com> wrote:
>> On Mon, May 25, 2009 at 1:16 PM, José Ignacio <jose.cyborg at gmail.com> wrote:
>> > Proposal:
>> > Deprecate & remove attribute access for user properties in
>> > KX_GameObject in favor of the recently introduced dictionary syntax.
>> > this: obj.userprop would become: obj["userprop"]
>> >
>> > Rationale:
>> > - Dictionary access allows the used of reserved or even illegal python
>> > names (like "for" and "class"), like the GUI and the logic bricks let
>> > you do now (thus being consistent with them), plus preventing name
>> > clashes between these and current/future class attributes. This is
>> > very important for beginners (and maybe even people with some
>> > experience), that would start wondering "why cant i access this
>> > property in python while i can use it perfectly with logic bricks?"
>> > - It is way faster, since it doesn't have to go trough all the python
>> > getattr system and dicts have very fast lookups.
>> > - Also, since names are python strings lets you do things would have
>> > to do with a __getattr() hack
>> > - Typing a class attribute wrong assignation would raise an exception
>> > instead of failing silently. For example, typing
>> > # -----------------------------
>> > obj.poistion = [1, 2.5, 3] # notice the typo
>> > # -----------------------------
>> > would create a property called "poistion" instead of raising an
>> > exception, thus leading to headaches and a lot of time wasting trying
>> > to find the issue. More if we are talking about beginners.
>> >
>> sorry, the last argument has some mistakes, should read as follows:
>>
>> - With the attribute access removed, typing a class attribute wrong
>> in an assignation operation would raise an exception instead of
>> failing silently.
>> For example, typing in the current engine:
>> # -----------------------------
>> obj.poistion = [1, 2.5, 3] # notice the typo
>> # -----------------------------
>> would create a property called "poistion" instead of raising an
>> exception, thus leading to headaches and a lot of time wasting trying
>> to find the issue. More if we are talking about beginners.
>>
>> > -- love
>> > cyborg_ar
>> >
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
>>
>
>
> --
> - Campbell
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
More information about the Bf-committers
mailing list