Найти - Пользователи
Полная версия: Как сослаться на неизвестную переменную в модуле?
Начало » Python для новичков » Как сослаться на неизвестную переменную в модуле?
1
Kyrym
Питон 3.
В модуле есть, скажем, три переменные:
mod.py
 a =1
b = 1
c = 1
В главном файле я буду выбирать через комбобокс, какую собственно переменную мне надо. Как правильно сделать ссылку на переменную в модуле такого вида:
 perem = self.box.currentText()
P = mod.perem
В таком виде получаю ошибку: “AttributeError: ‘module’ object has no attribute ‘perem’”.
Вижу решение только через цикл, прописывая все модули правильно:
 P = mod.a
P = mod.b
P = mod.c
PEHDOM
может вам подойдет getattr
https://docs.python.org/3/library/functions.html#getattr
For example, getattr(x, ‘foobar’) is equivalent to x.foobar
 from PyQt4 import QtGui, QtCore
import sys
import mod
class Dialog_01(QtGui.QMainWindow):
    def __init__(self):
        super(QtGui.QMainWindow,self).__init__()
        myQWidget = QtGui.QWidget()
        myBoxLayout = QtGui.QVBoxLayout()
        myQWidget.setLayout(myBoxLayout)
        self.setCentralWidget(myQWidget)
        self.ComboBox = QtGui.QComboBox()
        for i in 'abc':
            self.ComboBox.addItem(i)
        self.ComboBox.activated.connect(self.do_something)
        myBoxLayout.addWidget(self.ComboBox)
    def do_something(self):
         text = self.ComboBox.currentText()
         print(text, type(text))
         data = getattr(mod, text)
         print(data, type(data))
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    dialog_1 = Dialog_01()
    dialog_1.show()
    dialog_1.resize(480,320)
    sys.exit(app.exec_())
mod.py
 a=1
b=2
c=3
Rodegast
 getattr(mod, perem)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB