[Biopython-dev] Bio.SeqIO
Michiel de Hoon
mdehoon at c2b2.columbia.edu
Mon Feb 26 11:53:00 UTC 2007
Peter wrote:
> Michiel de Hoon wrote:
>> Alex Griffing wrote:
>>>> The easiest way to accomplish this might be to change the __init__ of
>>>> the Alignment class from
>>>>
>>>> def __init__(self, alphabet)
>>>>
>>>> to
>>>>
>>>> def __init__(self, alphabet, records=[])
>>>>
>>> Does this apply here?
>>> http://www.python.org/doc/faq/general.html#why-are-default-values-shared-between-objects
>>>
>> In theory, yes, but since we won't be modifying records it doesn't
>> matter. The full function would look like:
>>
>> def __init__(self, alphabet, records=[]):
>> self._alphabet = alphabet
>> self._records = list(records)
>>
>> The "list" is necessary since the user may pass an iterator for records
>> instead of a list.
>
> We (or the user) might well change the records - in particular, they
> might add MORE records. How about this:
>
Still, it doesn't matter, since we're making a copy of records via the
list function. So self._records is not the same as the records default
argument in the __init__ function. If a user adds more records, they
will end up in the object-specific self._records.
--Michiel.
More information about the Biopython-dev
mailing list