2つの別々のクラスでグローバルに宣言された変数へのアクセスに問題があります。これはバックエンドのサポートのためにパンダを使用する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クラスでは、完全に罰金と goto_raw_data
内で作品へのアクセスにはパンダのデータフレームが含まれていますが、__init__
の同じグローバル変数にアクセスすると、元の宣言にあるように、まだNone
に初期化されます。
私のinit関数では、グローバル変数の設定を妨げている何か不思議なことがありますか?私はおそらくコンパイラがクラスを読む順序を考えていたが、それ以外は何も考えることはできない。
__init__
のグローバル変数にアクセスできるようにする方法がありますか、または定義済みの関数でアクセスすることに固執しています。
ありがとうございました!
"インデントエラーが発生して申し訳ありませんが、正しくフォーマットする方法を理解できませんでした。" - あなたのコードをコピーして質問に貼り付け、貼り付けたすべての部分(プレビューに書式設定されたコード部分とそうでない部分の両方)をハイライト表示し、Ctrl-Kを押すか、中カッコでボタンを押します。 – user2357112
あなたの手助けをより簡単にするには、[mcve]を提供する必要があります。たくさんのコードを読まなければならないのは、助けようとしている人々を怖がらせる可能性が最も高いからです。 –
'raw_data'が' __init__'の 'None'でもまだ残っていれば、おそらくそれは実際にはまだ起こっていません。結果を計算する前に結果を使用することはできません。 – user2357112