Уведомления

Группа в Telegram: @pythonsu

#1 Март 16, 2017 14:30:02

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 225
Репутация: +  3  -
Профиль   Отправить e-mail  

Как сослаться на неизвестную переменную в модуле?

Питон 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

Отредактировано Kyrym (Март 16, 2017 14:30:18)

Офлайн

#2 Март 16, 2017 15:07:53

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как сослаться на неизвестную переменную в модуле?

может вам подойдет 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



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Март 16, 2017 15:21:27)

Офлайн

#3 Март 16, 2017 15:11:53

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2823
Репутация: +  185  -
Профиль   Отправить e-mail  

Как сослаться на неизвестную переменную в модуле?

 getattr(mod, perem)



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version