[解決済み] init__ 内でクラス関数を呼び出す
2022-04-20 15:47:01
質問
ファイル名を受け取り、ファイルを開き、いくつかのデータを解析するコードを書いています。これをクラスで行いたいと思います。次のコードは動作します。
class MyClass():
def __init__(self, filename):
self.filename = filename
self.stat1 = None
self.stat2 = None
self.stat3 = None
self.stat4 = None
self.stat5 = None
def parse_file():
#do some parsing
self.stat1 = result_from_parse1
self.stat2 = result_from_parse2
self.stat3 = result_from_parse3
self.stat4 = result_from_parse4
self.stat5 = result_from_parse5
parse_file()
しかし、この方法では、すべてのパース処理機構を
__init__
関数を使用します。この単純化されたコードでは問題ないように見えますが、関数
parse_file
はインデントもかなりのレベルになっています。私は、この関数を
parse_file()
を以下のようなクラス関数として使用します。
class MyClass():
def __init__(self, filename):
self.filename = filename
self.stat1 = None
self.stat2 = None
self.stat3 = None
self.stat4 = None
self.stat5 = None
parse_file()
def parse_file():
#do some parsing
self.stat1 = result_from_parse1
self.stat2 = result_from_parse2
self.stat3 = result_from_parse3
self.stat4 = result_from_parse4
self.stat5 = result_from_parse5
もちろん、このコードは機能しません。
parse_file()
のスコープ内にない。
__init__
関数を使用します。の中からクラス関数を呼び出す方法はありますか?
__init__
そのクラスの?それとも、私の考え方が間違っているのでしょうか?
どのように解決するのですか?
このように関数を呼び出してください。
self.parse_file()
を定義する必要があります。
parse_file()
関数はこのようになります。
def parse_file(self):
は
parse_file
メソッドを呼び出す際には、オブジェクトにバインドする必要があります (静的メソッドではないため)。これは、オブジェクトのインスタンスに対して関数を呼び出すことで行われます(この場合のインスタンスは
self
.
関連
-
任意波形を生成してtxtで保存するためのPython実装
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] __init__.py は何のためにあるのですか?
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] init__と__call__の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python string splicing.join()とsplitting.split()の説明
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。