2016-04-28 9 views
-1

ユーザのニーズに基づいてサブクラスオブジェクトの変数を変更できますか?もしそうなら、どのように、あるいは別のアプローチがありますか?ユーザの要求に基づいてサブクラス内のself.variablesの数を変更する

に* self。*変数をあらかじめ書き込まなくても、ユーザーの要求に基づいてサブクラスの変数のサイズを拡大して、ユーザーがリストを作成できるようにします。

どのようにサブクラスの長さが変化するリストを扱うのですか?

class MyClass(object): 
    def __init__(self, list1, list2): # list 1: keys; list 2: values 

     len1 = len(list1) # Changing range based on desired keys 
     for i in range(len1): 

      self.list1[i] = list2[i] # desired effect 

List1 = ['first','second','third']; List2 = [1,2,3]; 
print(MyClass(List1,List2)) 
List1.append('fourth'); List2.append(4) 
print(MyClass(List1,List2)) 

所望の出力は、[[getattr(item, x) for x in list1] for item in list2]戻り最初のインスタンスのための3つの値と第二の例えば4つの値です。

このクラスのインスタンスでgetattr(item, x)を試したときに表示されるエラーは、AttributeError: 'MyClass' object has no attribute <key>です。ここで、<key>はlist1の値ではなく、list1です。

私が持っている回避策はそうのように、フィールドを事前移入することです:私は減算または変数を追加するたびにこれをしなければならない

import re 

kLs = ("the", "list", "of", "new", "caught", "values") 

let = ['a','b','c','d','e','f'] 
reAN = re.compile("\w+") 
for k in kLs: print('self.'+reAN.search(re.sub(r"\s+", "", k)).group()+' = '+let[kLs.index(k)]) 

。これは動作しません。誰でも?

+0

私は編集の数を作ったが、木曜日からの応答を受け取っていません。何らかの理由がありますか?あなたは少なくともあなたの保留を解除し、他の人々が応答できるようにすることはできますか?なぜこれが適切な質問ではないのかについては触れられていない。 – double0darbo

答えて

2

Same as always:

MyClass(*space) 
+0

私は元の投稿では指定しませんでしたが、変数を取得するのと同じくらい、変更しようとしているのはサブクラス内の修正です。 – double0darbo

関連する問題