Если ваш модуль всегда будет импортировать другой модуль, всегда ставьте его сверху как PEP 8 , а другие ответы указывают. Кроме того, как упоминает @delnan в комментарии, в любом случае используются sys
, os
и т. Д., Поэтому не повредит импортировать их глобально.
Однако в условном импорте нет ничего плохого, если вам действительно нужен модуль только при определенных условиях выполнения.
Если вы хотите импортировать их, только если класс определен , например, если класс находится в условном блоке или другом классе или методе, вы можете сделать что-то вроде этого:
condition = True
if condition:
class C(object):
os = __import__('os')
def __init__(self):
print self.os.listdir
C.os
c = C()
Если вы хотите, чтобы он был импортирован, только если экземпляр класса , сделайте это в __new__
или __init__
.