attributes, properties, and accessors -- philosophy
ethan at stoneleaf.us
Tue Nov 24 18:39:26 CET 2009
Bruno Desthuilliers wrote:
> Ethan Furman a écrit :
>> The problem I have with properties is my typing. I'll end up
>> assigning to an attribute, but get the spelling slightly wrong
>> (capitalized, or missing an underscore -- non-obvious things when
>> bug-hunting), so now I have an extra attribute which of course has
>> zero effect on what I'm trying to do and I start getting wierd results
>> like viewing deleted records when I *know* I set useDeleted = False...
>> 30 minutes later I notice it was /supposed/ to be use_deleted. *sigh*
>> So -- to keep myself out of trouble -- I have started coding such
>> things as, for example:
>> result = table.use_deleted() # returns True or False
>> table.use_deleted(False) # skip deleted records
>> instead of
>> result = table.use_deleted
>> table.use_deleted = False
>> My question: is this [ severely | mildly | not at all ] un-pythonic?
> Definitly and totally unpythonic. The first solution to your problem is
> to stick to standard naming conventions. If this is not enough, Chris
> pointed you to really useful tools. Also, you can override __setattr__
> to catch such errors - at least during the coding/debug phase.
Good tools to know about, and a consistent naming pattern also makes
life easier (which I have since done ;).
Let's head towards murkier waters (at least murkier to me -- hopefully
they can be easily clarified): some of the attributes are read-only,
such as record count; others are not directly exposed, but still
settable, such as table version; and still others require a small amount
of processing... at which point do I switch from simple attribute access
to method access?
More information about the Python-list