2016-04-28 42 views
-1

可以根據用戶需求更改子類對象中的變量嗎?如果是這樣,如何,還是有不同的方法?根據用戶需求更改子類中的self.variables數量

我希望變量的子類列表根據用戶需求進行增大,而不必在init中預寫* 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