クラス設計時に、メンバ変数を用意すると思いますが、
いわゆる作業箱的な変数を定義するって、お作法的に良いでしょうか、良くないでしょうか?
今、オライリーの「pythonによるWebスクレイピング」本を見ていますが、
以下のようなサンプルがあります。
クローリングクラス
=>メソッド1:ページオブジェクトを取得するメソッド
=>メソッド2:ページから特定の属性を取得するメソッド
メソッド1で取得したページオブジェクトを、メソッド2の引数として渡しています。
このページオブジェクトって、クラスのメンバ変数としてキープしておいてはいけないんでしょうか?
そうするとメソッド2でわざわざ引数渡しする必要がなくなります。
Webページのクローリングの際には、ページオブジェクトはあちこちで
生まれるんだし、それを作業用変数のようにメンバ変数にキープしておけば、
あちこちのメソッドで参照できて便利ではないか?
と思っていますが、これはその変数のライフサイクルが怪しくなる(どこで有効になり、どこで編集されて・・
といった、グローバル変数の問題に似てる)ため、好ましくないでしょうか?
つまり、以下のいずれの見解があっていますでしょうか。
- 作業箱的なprivateメンバ変数」をそもそも定義すべきではない
- こういったことを解決するため、なんらかのデザインパターンが用意されており、
上記サンプルクラスはそれを適用しているだけ。
3. クローリングクラスの属性は「サイトURL」であり、そのサイトURLの分析のために用意する
ページオブジェクト(BeautifulSoupライブラリのインスタンス)は
厳密にはクローリングクラスの「属性」ではないため、外部から挿入すべき
(でもそうだとすると、そのページオブジェクトを取得するメソッドがこのクラス内にあるのが・・・)
以上、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー