> On 12 Jul 2020, at 00:15, DL Neil via Python-list <python-list@python.org> 
> wrote:
> 
>> That does not necessarily mean that the function needs to know
>> the particular representation or form of that data.   Let those be
>> objects with getter methods for the data you wish, and have the
>> function document what methods it will attempt to call.   Then
>> any class that provides the expected methods would be suitable.
> 
> +1
> 
> Here, the proposal is not to pass an object per-se, but to pass a 
> function/method ("getter method") which will deliver the requisite data-items?
> 
> So, might we then find that our mailing-label routine includes something like 
> (copy-pasting is NOT proper Python!):
> 
> def mail_label( getter ):
>    ...
>    ( first name, middle initial, last name, house number, street name,
>    apartment number, town, state, country, zip code ) = getter()
> 
> In which case, have we not moved the "very long list" from the function def 
> to a later line within the routine - and how is this in some way 'better'?
> 

This is not the refactor that Roger's excellent rule-of-thumb implies.

Clearly moving the 20 positional args into a tuple is basically the same code,
and the same maintenance problem.

I'd expect to see something like this:

def mail_label( person, address ):
        first_name = person.first_name
        # or if you want a function interface
        first_line_of_address = address.get_first_line()

Barry

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to