Как импортировать переменные beteen классов в одном модуле - PullRequest
0 голосов
/ 18 апреля 2020

Мне нужно импортировать эту переменную пути из первого класса в другие классы, это мой код:

import openpyxl

class Excell():
      global path
      def send_message(self, data):
          global path
          print("Path Excel is : '{}'".format(data))
          path = data # I need to export this variable 'path'

global path

class First():
      global path
      wb = openpyxl.load_workbook(path)
      sheet = wb['sheet']
      firstCell= sheet["A1"].value
      print("Cell is :" + firstCell)

После выполнения кода я вижу это сообщение:

C:\Python\python.exe E:/PycharmProjects/test/firstTest.py
Traceback (most recent call last):
   File "E:\PycharmProjects\test\firstTest.py", line 11, in <module>
      class First():
   File "E:\PycharmProjects\test\firstTest.py", line 13, in First
      wb = openpyxl.load_workbook(path)
NameError: name 'path' is not defined

Process finished with exit code 1

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Удалите global s.

У функции отправки return значение пути.

Непосредственно перед классом First присвойте значение недавно определенной глобальной переменной:

path = Excell().send_message("foo")

Тогда это значение доступно при назначении книге.

0 голосов
/ 19 апреля 2020

Я использую это, но не работает. Я вижу это сообщение. Я импортирую функцию `def send_message (self, data):

из GUI модуля, как в этом примере https://www.raspberrypi.org/forums/viewtopic.php?t=195973, но изменить запись изменения на метку, получить путь из файла brows:

import openpyxl

class Excell():

     def send_message(self, data):

           print("Path Excel is : '{}'".format(data))
           return data

path = Excell().send_message("foo")

class First():

       wb = openpyxl.load_workbook(path)
       sheet = wb['sheet']
       firstCell = sheet["A1"].value
       print("Cell is :" + firstCell)

Я вижу эту ошибку:

C:\Python\python.exe E:/PycharmProjects/Amazon/bb.py
Path Excel is : 'data'
Traceback (most recent call last):
      File "E:/PycharmProjects/Amazon/bb.py", line 12, in <module>
           class First():
      File "E:/PycharmProjects/Amazon/bb.py", line 14, in First
           wb = openpyxl.load_workbook(path)
      File "C:\Python\lib\site-packages\openpyxl\reader\excel.py", line 312, in                load_workbook
            reader = ExcelReader(filename, read_only, keep_vba,
      File "C:\Python\lib\site-packages\openpyxl\reader\excel.py", line 124, in __init__
            self.archive = _validate_archive(fn)
      File "C:\Python\lib\site-packages\openpyxl\reader\excel.py", line 94, in _validate_archive
            raise InvalidFileException(msg)
openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support  file format, please check you can open it with Excel first. Supported formats are: .xlsx,.xlsm,.xltx,.xltm

Процесс завершен с кодом выхода 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...