Ответ 1
Используйте __builtin__
.
def open():
pass
import __builtin__
print open
print __builtin__.open
... дает вам...
<function open at 0x011E8670>
<built-in function open>
Как вы явно обращаетесь к имени в Python, встроенном в область видимости?
Одна из ситуаций, когда я столкнулся с этим, - это модуль, называемый foo, который имел открытую функцию. В другом модуле функция foo open будет доступна как foo.open, которая работает хорошо. В самом foo, open блокирует встроенный open. Как вы можете получить доступ к встроенной версии имени, как открытое явно?
Я знаю, что, вероятно, практически плохая идея заблокировать любое встроенное имя, но мне все же интересно узнать, есть ли способ явно получить доступ к встроенной области.
Используйте __builtin__
.
def open():
pass
import __builtin__
print open
print __builtin__.open
... дает вам...
<function open at 0x011E8670>
<built-in function open>
Это что-то вроде
__builtins__.open()