Совместное использование переменных класса в PythonPython

Программы на Python
Anonymous
Совместное использование переменных класса в Python

Сообщение Anonymous »

Просмотрев множество сообщений о переменных класса и переменных экземпляра, я не понимаю, как распределять переменные между классами.

Код: Выделить всё

#!/usr/bin/python3
from PyQt5.QtWidgets import (QApplication)
import sys
class One():
def __init__(self, myTextString, parent=None):
self.mytext = myTextString
self.printtxt()
Main.txt = 'another string'
self.txt2 = 'a third string'
def printtxt(self):
print('One',self.mytext)

class Two():
def __init__(self, parent=None):
self.printtxt()

def printtxt(self):
print('Two',One.txt) # Attribute Error
print('Two',One.txt2) # Attribute Error

class Main():
def __init__(self, parent = None):
self.txt = 'a string of text'
self.w = One(self.txt)
self.w1 = Two()
print(self.txt) # not changed by One

if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Main()
sys.exit(app.exec_())
В приведенном выше коде основной класс инициирует класс один и класс два. Хотя я могу отправить значение self.txt инициированному классу One, у меня возникают две проблемы.
  • Когда я пытаюсь напечатать переменные One в printtxt класса Two, я получаю ошибки атрибута:
AttributeError: объект типа «Один» не имеет атрибута «mytext»
AttributeError: объект типа «One» не имеет атрибута «txt2»
  • Когда я пытаюсь изменить переменную txt Main в One, это не изменилось
Я хотел бы поделиться значением, созданным в любом конкретном классе, со всеми другими созданными классами (другими словами, «глобальные» переменные вверх в точку).
Концепция контроллера в примере Tkinter Брайана Окли (см. «Переключение между двумя фреймами в tkinter?» и «Как получить переменные данные из класса?»), я думаю, близка, но если кто-нибудь сможет ответить или указать мне на сообщения, которые просто объясняют это, я буду благодарен.
Спасибо за любую помощь.

Подробнее здесь: https://stackoverflow.com/questions/784 ... -in-python

Вернуться в «Python»