Есть ли способ установить переменные во время выполнения в Python

да, как указано выше ...

Я напишу только пример:

>>> a = open('file.txt')
>>> a.read()
#output
>>> a.seek(0)
>>> a.read()
#same output
-2
задан Nitesh 15 January 2019 в 19:01
поделиться

6 ответов

Как насчет:

class ABC:
    def __init__(self,debugFlag):
        self.debugFlag = False
    def some_function():
        if self.debugFlag is True:
            print "Some debug logs"
    def set_flag():
        self.debugFlag = True
0
ответ дан Wilbert 15 January 2019 в 19:01
поделиться

Один из способов сделать это - объявить var в ваших корневых модулях и импортировать / ссылаться на них в той же области видимости, когда вы устанавливаете и ссылаетесь.

Представьте себе структуру каталогов ваших модулей следующим образом

my_module/
- __init__.py
- another_module.py
- utils/
  - __init__.py
  - and_so_on.py

в my_module / __ init__.py, объявите ваш __debug__ var

__debug__ = False

в вашем примере кода

import my_module
class ABC:
    def __init__(self):
      pass
    def some_function()
        if my_module.__debug__ is True:
            print "Some debug logs"

Затем, прежде чем вы на самом деле выполните код, установите свой флаг отладки на False, импортируя и ссылаясь одинаково

import my_module
my_module.__debug__ = True

Пока вы импортируете и ссылаетесь на переменную того же IE: [1111 ]

import my_module
if my_module.__debug__ is True:
   print("IN DEBUG")

Он сохранит свое значение на протяжении всего твоего исполнения

0
ответ дан John 15 January 2019 в 19:01
поделиться

Попробуйте что-то вроде этого:

class ABC():
     def __init__(self, debugFlag):
          self.debugFlag = debugFlag

     def some_function(self):
         if self.debugFlag:
               print('Debug on\n')
         else:
               print('Debug off\n')


abc_object = ABC(False)

def check_choice():
  if str(choice) == '1':
     abc_object.debugFlag = True
     abc_object.some_function()

  elif str(choice) == '2':
     abc_object.debugFlag = False
     abc_object.some_function()
  else :
     print('Invalid input')

while True:
    choice = input('Type 1 to enable debugging, 2 to disable debuigging : ')
    check_choice()

Резюме:

При инициализации класса требуется 1 обязательный аргумент debugFlag, True или False.

Когда вы определяете функцию из класса, вы должны использовать аргумент «self». Объяснение того, почему это

«если self.debugFlag» такое же, как если бы «self.debugFlag истинно: 116]

Мы создаем экземпляр ABC и сохраняем его в переменной abc_object. Мы передаем ему значение по умолчанию для debugFlag, в данном случае False.

Затем мы вводим некоторую логику для проверки состояния debugFlag, а затем выполняем некоторую функцию в зависимости от результата нашей логики.

Надеюсь, это поможет. Дайте мне знать, если вам нужны дальнейшие разъяснения.

0
ответ дан Matt Clay 15 January 2019 в 19:01
поделиться

С небольшой модификацией вашего класса:

class ABC:
    def __init__(self,debugFlag=False):
        self.debugFlag = debugFlag    # initialize the flag here or use default
    def some_function()
        if self.debugFlag is True:
            print "Some debug logs"

После создания объекта вы сможете изменить его атрибуты, например:

obj_abc = ABC()        # debug off by default
obj_abc.some_function()    # no debug print

obj_abc.debugFlag = True   # enable debug
obj_abc.some_function()    # now with debug print

obj_abc.debugFlag = False  # disable debug
obj_abc.some_function()    # now without debug print
0
ответ дан sal 15 January 2019 в 19:01
поделиться

Вы можете изменить значение self.debugFlag при выполнении условия, да.

class ABC:
    def __init__(self,debugFlag):
        self.debugFlag = debugFlag # or omit that arg and always false
    def some_function(self): # Need self 
        if self.debugFlag:
            print "Some debug logs"
    def condition_setter(self):
        # Do some checks here then set debugflag to False
        self.debugFlag = False
0
ответ дан Charles Landau 15 January 2019 в 19:01
поделиться

Я не думаю, что вы можете сделать это напрямую из переменных, но вы можете, например, создать файл (например, debug.txt) и проверить, существует ли он для вашего запуска. Например, создайте пустой файл с именем debug.txt и проверьте в своем скрипте, существует ли файл.

Непроверенный код:

import os

class ABC:
    def __init__(self,debugFlag):
        self.debugFlag = False
    def some_function()
        if os.path.exists("debug.txt"):
            print "Some debug logs"

Таким образом, вы можете запустить / отладочную отладку, создав / удалив файл "debug.txt".

0
ответ дан DSLima90 15 January 2019 в 19:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: