MRAB wrote:
On 01/06/2012 18:50, Ethan Furman wrote:
I'm getting towards an actual non-beta release, which means even more
tests, polishings, cleaning up of various things, and actual
documentation.  :)

However, I am wondering about my current record API:

Currently, one does things like:

    record.scatter_fields()

or

    record.has_been_deleted

or

    record.record_number

The reason those method names are so long is that field names are
limited to 10 characters, and long method names means no possibility of
name clashes.

Unfortunately, Version 7 tables can have much longer field names.

So, do I not ever support version 7, do I not worry about it until I get
there (which could easily be a long time from now), or do I move all the
methods out of the record class and make them module level functions
instead?  That would like:

    dbf.scatter_fields(record)

    dbf.has_been_deleted(record)

    dbf.record_number(record)

although probably with shorter names.

Thoughts?

I'd probably think of a record as being more like a dict (or an OrderedDict)
with the fields accessed by key:

    record["name"]

but:

    record.deleted

Record fields are accessible both by key and by attribute -- by key primarily for those cases when the field name is in a variable:

    for field in ('full_name','nick_name','pet_name'):
        print record[field]

and since dbf record names cannot start with _ and are at most 10 characters long I've used longer than that method names... but if I want to support dbf version 7 that won't work.

I would like to, not sure I will (it's not a need for me at work), but prudence suggests I make the easy preparations now.

~Ethan~
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to