pythonのクラス内クラスについて
動作はしているのですが,メモリを無駄に使用量しているのは明らかですし,他にもっと良い方法があると思うのです.
知識を貸していただけないでしょうか.したいことは
data.generate.mu_sigma()
ようにパラメータを生成したり,変更したりして
data.mu
としてデータの参照することです.
理由は
data.generate_mu_sigma(self)
というような方法では,予測補間での検索が大変なことや,
data.generate.
data.generate2.
などを作って別な生成方法を試したりしたいからです
.pyファイルでモジュールとしてあつかえばいいかなとも思いましたが,オブジェクトとして値が保持されなかったりするのかなと考えたりしてしまします.
他にもcの構造体のように型をだけを宣言するクラスと,処理を主に扱うクラスをまとめたクラスなどをつくれたら,うれしいなと思うのですが,不可能でしょうか.
よろしくお願いします.
import numpy as np
class test_data:
def __init__(self,n_samples,dim):
class generate:
def __init__(self,n_samples,dim):
self.n_samples = n_samples
self.dim = dim
self.mu = 0.0
self.sigma = 0.0
def mu_sigma(self):
self.mu = np.random.uniform(low=-2.0, high=2.0, size=self.dim)
self.sigma = np.random.uniform(low=1.0, high=2.0, size=self.dim)
self.n_samples = n_samples
self.dim = dim
self.generate = generate(n_samples,dim)
self.generate.mu_sigma()
self.mu = self.generate.mu
self.sigma = self.generate.sigma
data=test_data(n_samples=10,dim=2)
print(data.generate.mu)
print(data.mu)
結果
[ 0.97730724 1.0678634 ]
[ 0.97730724 1.0678634 ]