Уведомления

Группа в Telegram: @pythonsu

#1 Март 16, 2018 12:48:36

Florenzo
Зарегистрирован: 2013-06-05
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

импорт из класса/объекта в глобальную область видимости



Можно ли сделать import math глобально из класса или метода?

 class A():
     def __init__(self, number):
         self.number = int(number)
         # import math
     def value(self):
         if self.number == 9:
            import math
            return math.sqrt(self.number)

 >>> a1 = A(9)
>>> a1.value()
3.0
>>> math.sqrt(16)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'math' is not defined

Ну и, вероятно на ту же тему:

хочу распечатать содержимое “import this” - не сразу, а как-нибудь потом в программе, как это сделать?
так, разумеется не хочет:

a = import this
print(a)

Офлайн

#2 Март 16, 2018 13:02:19

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

импорт из класса/объекта в глобальную область видимости

Florenzo
Можно ли сделать import math глобально из класса или метода?
технически да, можно получить к глобальной области видимости, но это такой жуткий костыль, что напрашивает вопрос - А зачем вам это? Почему нельзя просто в начале модуля импортировать нужный модуль?

Florenzo
хочу распечатать содержимое import this - потом, как это сделать?
так, разумеется не хочет:

a = import this
print(a)
а вы посмотрите на исходник этого файла и сразу все поймете. Если не поймете, то спросите чт оименно вам там не понятно



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Март 16, 2018 13:04:09

Vladimirv
Зарегистрирован: 2013-03-22
Сообщения: 108
Репутация: +  7  -
Профиль   Отправить e-mail  

импорт из класса/объекта в глобальную область видимости

А что случилось с копипастом?

import this
s=this.s
d = {}
for c in (65, 97):
for i in range(26):
d[chr(i+c)] = chr((i+13) % 26 + c)

print("".join([d.get(c, c) for c in s]))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version