私のコードには次のクラス構造があります:
基本的にサブクラス B からのオブジェクトのリストであるスーパークラス A. クラス A には、変数 var を作成するメソッド meth があります (ファイルから読み取ることによって) . 変数 var は、サブクラス B のメソッドからアクセスできる必要があります。問題は、a = A() を初期化した後、var がインスタンス a の属性であり、super( を使用するサブクラス メソッドからアクセスできないことです。 )。var は float の大きな配列 (約 1e5 要素) であるため、B のインスタンスの属性にしない (n 回!) か、明示的に methB に渡すことで、メモリ使用量を最小限に抑えようとしています。
class A(object):
def __init__(self,n):
self.data = [B() for _ in xrange(n)]
def __getitem__(self,n):
return self.data[n]
def methA(self):
with open('file.txt','r') as fp:
self.var = fp.readlines()
class B(A):
def __init__(self):
self.derived_var = []
def methB():
'''This method needs to use var defined in meth of A above.'''
a = A(5)
a.methA()
for b in A:
b.methB()
これはpythonで可能ですか、それともコーディングが悪いですか??