Я пытаюсь создать экземпляр класса, используя в качестве аргумента постоянно обновляемую глобальную переменную. Но происходит то, что класс (который работает в своем собственном потоке) не распознает изменение глобальной переменной, он рассматривает ее как значение, которое было при передаче. Я мог бы напрямую ссылаться на глобальную переменную внутри класса, но мне хотелось знать, есть ли способ передать ее при создании экземпляра, чтобы избежать повторения кодов — по одному для каждой глобальной переменной?
В приведенном ниже коде глобальная переменная обновляется, но не внутри класса:
` потоки импорта
время импорта
# Global variable
global_number = 0
class GlobalVarClass:
def __init__(self, global_var):
"""
Initializes the class with a global variable.
"""
self.global_var = global_var
def print_value(self):
"""
Prints the current value of the global variable.
"""
print(f"Current Global Variable Value: {self.global_var}")
def increment_global_variable():
"""
Increments the global variable by 1 every second.
"""
global global_number
while True:
time.sleep(1) # Wait for 1 second
global_number += 1 # Increment the global variable by 1
print(f"Incremented Global Variable: {global_number}")
def main():
# Create an instance of the class and pass the global variable as an argument
global_instance = GlobalVarClass(global_number)
# Start the thread to increment the global variable
increment_thread = threading.Thread(target=increment_global_variable, daemon=True)
increment_thread.start()
# Continuously print the current value of the global variable
while True:
global_instance.print_value()
time.sleep(2) # Print the value every 2 seconds to see the updates
if __name__ == "__main__":
main()`
Подробнее здесь: https://stackoverflow.com/questions/792 ... to-a-class
Python. Передайте глобальную переменную (которая постоянно обновляется) в класс. ⇐ Python
Программы на Python
1732065030
Anonymous
Я пытаюсь создать экземпляр класса, используя в качестве аргумента постоянно обновляемую глобальную переменную. Но происходит то, что класс (который работает в своем собственном потоке) не распознает изменение глобальной переменной, он рассматривает ее как значение, которое было при передаче. Я мог бы напрямую ссылаться на глобальную переменную внутри класса, но мне хотелось знать, есть ли способ передать ее при создании экземпляра, чтобы избежать повторения кодов — по одному для каждой глобальной переменной?
В приведенном ниже коде глобальная переменная обновляется, но не внутри класса:
` потоки импорта
время импорта
# Global variable
global_number = 0
class GlobalVarClass:
def __init__(self, global_var):
"""
Initializes the class with a global variable.
"""
self.global_var = global_var
def print_value(self):
"""
Prints the current value of the global variable.
"""
print(f"Current Global Variable Value: {self.global_var}")
def increment_global_variable():
"""
Increments the global variable by 1 every second.
"""
global global_number
while True:
time.sleep(1) # Wait for 1 second
global_number += 1 # Increment the global variable by 1
print(f"Incremented Global Variable: {global_number}")
def main():
# Create an instance of the class and pass the global variable as an argument
global_instance = GlobalVarClass(global_number)
# Start the thread to increment the global variable
increment_thread = threading.Thread(target=increment_global_variable, daemon=True)
increment_thread.start()
# Continuously print the current value of the global variable
while True:
global_instance.print_value()
time.sleep(2) # Print the value every 2 seconds to see the updates
if __name__ == "__main__":
main()`
Подробнее здесь: [url]https://stackoverflow.com/questions/79205494/python-pass-a-global-variable-that-is-constantly-being-updated-into-a-class[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия