Python:如何从一个类到另一个类获取非初始化属性

Python:如何从一个类到另一个类获取非初始化属性,python,class,attributes,Python,Class,Attributes,我试图将一个变量从一个类发送到另一个类。问题是我不能使用init构造函数,因为我的变量在开始时没有定义。如果用户按下一个按钮,它将调用一个函数(在第一个类中),变量将获得在该函数中计算的值。我需要在另一个类中获取该变量,但我不能这样做 class Fenetre_P(QtWidgets.QMainWindow): def __init__(self): super(Fenetre_P, self).__init__() self.initUI()

我试图将一个变量从一个类发送到另一个类。问题是我不能使用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未定义

实例变量在分配它们时开始存在。它们不必仅在init方法中定义。看起来您需要的是将amax设置为实例变量,并将
Fenetre\u P
的实例传递给
Fenetre\u 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

实例变量在赋值时就存在了。它们不必仅在init方法中定义。看起来您需要的是将amax设置为实例变量,并将
Fenetre\u P
的实例传递给
Fenetre\u 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

这应该会有所帮助,尽管您可以使用其他OOP概念(如组合)来完成工作

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)

这应该会有所帮助,尽管您可以使用其他OOP概念(如组合)来完成工作

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)