Если вы запустите приведенный ниже код, вы заметите, что метод set
класса UsesSet
не скрывает тип встроенного набора.
class UsesSet(object):
def set(self):
pass
def other(self):
my_set = set([1, 2])
print type(my_set), my_set
obj = UsesSet()
obj.other()
Приведенный выше код выводит <type 'set'> set([1, 2])
, показывающий, что метод set()
нашего класса не скрыл встроенную set()
Если, однако, у вас есть модуль, в котором вы определили функцию с именем set, как показано ниже, происходит что-то другое:
def set(arg):
print "This is my own set function"
class UsesSet(object):
def other(self):
my_set = set([1, 2])
print type(my_set), my_set
obj = UsesSet()
obj.other()
Код выше выводит:
This is my own set function
<type 'NoneType'> None
Итак, как вы можете видеть функция уровня модуля с тем же именем, что и встроенная, скрывает встроенную.