根据用户需求更改子类self.variables的数量
Change quantity of self.variables in subclass based on user's demand
我可以根据用户需要更改子class 对象中的变量吗?如果是这样,如何,或者是否有不同的方法?
我希望子class 变量列表根据用户的需求增加大小,而无需在 init 中预先编写 *self.*变量,并允许用户列出清单。
如何处理子class中长度不断变化的列表?
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]
returns 第一个实例有 3 个值,第二个实例有 4 个值。
我在这个 class 的实例上尝试 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)])
每次我想减去或添加一个变量时我都必须这样做。这行不通。任何人?
MyClass(*space)
我可以根据用户需要更改子class 对象中的变量吗?如果是这样,如何,或者是否有不同的方法?
我希望子class 变量列表根据用户的需求增加大小,而无需在 init 中预先编写 *self.*变量,并允许用户列出清单。
如何处理子class中长度不断变化的列表?
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]
returns 第一个实例有 3 个值,第二个实例有 4 个值。
我在这个 class 的实例上尝试 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)])
每次我想减去或添加一个变量时我都必须这样做。这行不通。任何人?
MyClass(*space)