2014-01-08 4 views
0

Неплохо ли объявлять функцию с тем же именем, что и метод?Функции, которые обмениваются именами с методами

В этом примере набора имеет метод объединения и я также объявил функцию под названием союза:

def union(*lists): 
    '''returns a list containing all unique values from input lists''' 

    if len(lists) == 0: 
     return lists[0] 

    result = lists[0] 
    for item in range(1, len(lists)): 
     result = set(result).union(set(lists[item])) 

    return list(result)  

a=[1,2,4] 
b=[4,5,1] 
c=[9,7,5] 

print union(a, b, c) 

Я посмотрел на PEP8 и обнаружил, что methods and functions have the same naming rules, но это нормально, чтобы дать им то же имя?

+0

Если это не сбивает с толку (или членов вашей команды), это нормально. –

+0

Спасибо. Я проверял, есть ли какие-то лучшие практики, которые я пропустил. – emh

ответ

2

Нет проблем с использованием имен, которые также используются как методы для некоторых объектов. Различные пространства имен не будут конфликтовать.

Единственное, о чем вам нужно беспокоиться, это маскировать имена в namespace; встроенные глобальные, глобальные глобальные видимости видны в локальном пространстве имен, поэтому вы не хотите маскировать встроенные имена.

Но методы на объекте видны только этой области; вам необходимо квалифицировать метод с помощью someset.union(), который никогда не может противоречить вашей функции union().

Если вам нужно было ограничить свои имена тем, что еще не было выполнено с помощью метода в стандартной библиотеке Python, вам вряд ли удастся использовать какие-либо имена.

+0

Спасибо Martijn, это действительно полезно. – emh

Смежные вопросы