да, как указано выше ...
Я напишу только пример:
>>> a = open('file.txt')
>>> a.read()
#output
>>> a.seek(0)
>>> a.read()
#same output
Как насчет:
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
Один из способов сделать это - объявить 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")
Он сохранит свое значение на протяжении всего твоего исполнения
Попробуйте что-то вроде этого:
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, а затем выполняем некоторую функцию в зависимости от результата нашей логики.
Надеюсь, это поможет. Дайте мне знать, если вам нужны дальнейшие разъяснения.
С небольшой модификацией вашего класса:
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
Вы можете изменить значение 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
Я не думаю, что вы можете сделать это напрямую из переменных, но вы можете, например, создать файл (например, 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".