我在訪問兩個獨立類中的全局聲明變量時遇到問題。這是一個使用熊貓進行後端支持的kivy應用程序。在Python類中訪問全局變量__init__
這裏是全局變量,raw_data
的初始化,以及它最初修改(在show_raw_data
FUNC):
# original dataframe
raw_data = None
class IntroScreen(Screen):
def __init__ (self, **kwargs):
super (IntroScreen, self).__init__(**kwargs)
self.preview_screen_layout.add_widget(Button(text="View Raw Data", on_release=self.goto_raw_data))
# switch to preview screen and show raw data when import is clicked
def show_raw_data(self, *args):
global file_path_list
global raw_data
try:
# check input is correct
if ".xlsx" in file_path_list["orig_data"]:
raise ValueError
else:
# open csv file to display and display it
raw_data = pd.read_csv(file_path_list["orig_data"])
dfgui.show(raw_data)
# move to next screen
self.manager.current = 'preview_screen'
而這裏就是我試圖訪問能夠顯示這是在使用熊貓讀取數據:
class PreviewScreen(Screen):
def __init__(self, **kwargs):
super (PreviewScreen, self).__init__(**kwargs)
global raw_data
dfgui.show(raw_data)
# display raw data to user
def goto_raw_data(self, *args):
global raw_data
dfgui.show(raw_data)
但這裏是我的問題 - 在PreviewScreen類,訪問global raw_data
內goto_raw_data
運行完美,raw_data
包含熊貓數據框,但在訪問__init__
中的同一全局變量時,它仍然初始化爲None
,因爲它在原始聲明中。
在init函數中是否有一些奇怪的事情阻止了全局變量的填充?我想也許是編譯器讀取類的順序,但除此之外我什麼也想不到。
是否有解決方法,以便我可以訪問__init__
中的全局變量,或者我堅持訪問定義的函數。
感謝您的幫助!
」對於縮進錯誤感到抱歉,我無法弄清楚如何正確格式化。「 - 將代碼複製粘貼到問題中,然後突出顯示您粘貼的所有內容(包括在預覽中顯示代碼格式的部分以及不顯示的部分),然後按Ctrl-K或帶有大括號的按鈕。 – user2357112
爲了更容易幫助您,您應該提供[mcve]。閱讀大量的代碼頁面很可能會嚇跑試圖提供幫助的人。 –
如果'__init__'中'raw_data'仍然是'None',那麼應該將其設置爲其他內容的代碼可能還沒有實際發生。在計算它們之前,您不能使用結果。 – user2357112