私はPythonとOOプログラミングでは新しいので、次の質問が意味をなさないかどうかわかりません:...別のクラスの特定のクラスで生成されたデータの使用方法は? (Pythonで)
I ' 2つのクラスを持っています。データを生成するもの(DataGen()
と呼ぶ)と、このデータを処理して統計情報を与えるもの(Stats()
と呼んでください)。私は、それをよりきれいに保つために、異なるpyファイルに両方を入れたいので、DataGen.pyに触れることなくStats.pyにメソッドを追加できます。このような何か:ここでは今
class Stats(object):
def __init__(self, something):
# something here to initialize
# etc..
def mean(self):
# calculate the mean using something like DataGen.X
Stats.py
でDataGen.py
class DataGen(object):
def __init__(self, number_of_samples, arg2):
self.X = np.zeros([number_of_samples,1])
# etc..
def samples(self):
# do some sampling and save it in self.X
では、と私は迷子に一部付属しています。私はStats()
がDataGen()
のインスタンスに属するデータを処理したいと思っていますが、DataGen.X
に含まれるデータをStats
にリンクする方法がわからないので、DataGen.samples()
でサンプリングするたびにデータを使用できます。
DG = DataGen(arg1,arg2)
のインスタンスを作成し、このオブジェクトをS = Stats(DG)
に渡そうとしました。しかし、私がこの方法で初期化すると、DataGen.samples()
で再びサンプリングした後に統計を推定するために使用されたデータは変更されませんでした。私はサンプリングするたびに、私は新しいデータでインスタンスS = Stats(DG)
を作成しなければならないと思います。これは悪いようです...とにかく私はこのStats()
クラスをDataGen()
のデータに添付できますか?これは悪い考えか恐ろしい構造ですか?
DataGen
がStatsのメソッドなどを継承するものを構築すると、これについてどう考えなければならないかもわかりません。 DataGen
がStats
から継承されていて、Stats
のデータにDataGen
のデータが必要な場合は、どうすればこのループを解決できますか? Stats
がDataGen
から継承する場合は、の代わりにStats.DataGen.samples()
またはStats.samples()
のようにStatsのインスタンスを1つ作成してサンプルする必要があります。私のコードの残りの部分はDataGen()
を使用しているので、私はそれが好きではないでしょう。私はそれを使用しないと、より良い構造になっていると思います。Stats()
サンプル!
上記は意味がありますか?これに関するコメントはとても役に立ちます!
コンストラクタでDatagenオブジェクトを渡してから、それを表示する必要があるデータセットオブジェクトの内部値を変更する.samples()を実行すると、pandasライブラリ...(http://pandas.pydata.org/) – pez
を確認します統計クラスではあなたの統計を再実行する必要があります。あなたは、統計情報のコンストラクタでdatagenを渡したコードを表示できますか?それがうまくいかない場合は問題があると思います。あなたのOOPの理解は上手く見える – Hani