簡體   English   中英

如何使用在 class 中聲明的變量,在這個 class 之外?

[英]How to use a variable declared inside a class, outside of this class?

我在一個涉及 Python 編程的項目中遇到了這個問題。 我制作了這個 class ,它會彈出一個屏幕,這樣我就可以打開一個 xls 文件。 在這個 class 里面,這個文件的目錄然后被放入這個變量“文件名”。 :>

class OpenFile(QtGui.QMainWindow):
  def __init__(self):
    super(OpenFile, self).__init__()
    self.initUI()

  def initUI(self):
    openFile = QtGui.QPushButton('Open Orderpakket', self)
    openFile.setGeometry(0, 00, 350, 300)
    openFile.setStatusTip('Open new File')
    self.connect(openFile, QtCore.SIGNAL('clicked()'), self.showDialog)
    self.setWindowTitle('Open Orderpakket')

  def showDialog(self):
    filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file',r'J:\Integratie Project\Files', "Excel Files (*.xls*.xlsx)")

    print filename

在這個 class 里面,變量文件名里面確實有正確的目錄。 現在我想在這里使用它,在 class 或 def 之外:

wb = xlrd.open_workbook(filename)

這不起作用,給我“未定義文件名”的錯誤

我已經閱讀了 Python 的“全局”命令,它似乎有解決方案,但我似乎無法讓它工作。

任何人?

我不會詳細介紹您的代碼,而只會用它來解釋基本概念。

showDialog中的變量filename被定義為局部變量 - 因此,您無法在此 function 之外訪問它。

如果要將變量定義為 class OpenFile 的實例變量,則需要使用self.filename

我假設您在某處有一個 class OpenFile的實例,例如:

openfile = OpenFile()

現在您可以通過調用從該實例訪問變量:

openfile.filename

filename作為屬性添加到 class 的 object 中,即self

self.filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file',r'J:\Integratie Project\Files', "Excel Files (*.xls *.xlsx)")

這樣您就可以像這樣訪問它:

wb = xlrd.open_workbook(openfile.filename)

其中openfileOpenFile class 的 object。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM