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