Python: как получить неинициализированный атрибут из одного класса в другой - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь отправить переменную из одного класса в другой.Проблема в том, что я не могу использовать конструктор init , так как моя переменная не определена в начале.Если пользователь нажмет одну кнопку, он вызовет функцию (в первом классе), а переменная получит значение, рассчитанное в этой функции.Мне нужно получить эту переменную в другом классе, но я не могу этого сделать.

class Fenetre_P(QtWidgets.QMainWindow):
    def __init__(self):
        super(Fenetre_P, self).__init__()
        self.initUI()

    def initUI(self):
        self.chk_dark = QtWidgets.QCheckBox("Theme sombre", self)      
        self.chk_dark.stateChanged.connect(lambda: self.SetBarValues())
    def SetBarValues(self):
        amax = 50

class Fenetre_M(QtWidgets.QDialog):
    def __init__(self):
        super(Fenetre_M, self).__init__()
        self.initUI()

    def initUI(self):
        ...
        def test(self):
            print(amax)

amax не определен

Ответы [ 2 ]

1 голос
/ 21 мая 2019

это должно помочь, хотя вы могли бы использовать другие концепции ООП, такие как композиция, чтобы выполнить работу

class Fenetre_P(QtWidgets.QMainWindow):
    amax=0
    def __init__(self):
        super(Fenetre_P, self).__init__()
        self.initUI()

    def initUI(self):
        self.chk_dark = QtWidgets.QCheckBox("Theme sombre", self)      
        self.chk_dark.stateChanged.connect(lambda: self.SetBarValues())
    def SetBarValues(self):
        self.amax = 50

class Fenetre_M(QtWidgets.QDialog):
    def __init__(self,amax):
        super(Fenetre_M, self).__init__()
        self.amax=amax
        self.initUI()

    def initUI(self):
        ...
        def test(self):
            print(self.amax)
1 голос
/ 21 мая 2019

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

>>> class A:
...    def __init__(self):
...       self.a = 3
...    def some(self):
...       self.b = 9
...
>>> ainstance = A()
>>> dir(ainstance)
['__doc__', '__init__', '__module__', 'a', 'some']
>>> ainstance.a
3
>>> ainstance.some()
>>> dir(ainstance)
['__doc__', '__init__', '__module__', 'a', 'b', 'some']
>>> ainstance.b
9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...