2017-10-10 65 views
0
class User: 
    num_of_user = 0 
    def __init__(self,name): 
     self.name = name 
     User.num_of_user += 1 

user_1 = User('A') 
user_2 = User('B') 
.... 

class Value(User): 
    def __init__(self,name,value): 
     User.__init__(self, name) 
     self.value = value 

# --> user_1.value = read a new manual input 
# --> user_2.value = read a new manual input 
.... 

我不熟悉如何在Class中正确呈现实例/属性。如何给循环中的类实例属性赋值

如何在For循环中写上述注释?

回答

1

将所有创建的User_X实例添加到List/Array(users/userList)并遍历它。

# step by step 
user_1 = User("A") 
user_2 = User("B") 
user_3 = User("C") 

users = [] 
users.append(user_1) 
users.append(user_2) 
users.append(user_3) 

# Better way with less instances 
users = [User("A"), User("B"), User("C")] 

现在你可以添加一个简单的重复,如:

for user in users: 
    user.value = <SOME INPUT> 
+0

如何使users.append()在一个循环中也? –

+2

@LiDong'用户=地图(用户,[“A”,“B”,“C”])' – Adirio

2

这样做,

class User: 
    num_of_user = 0 
    def __init__(self,name): 
     self.name = name 
     User.num_of_user += 1 

names = ['A','B','C','D'] 
users = [] 
for name in names: 
    users.append(User(name)) 

for user in users: 
    user.value = 'input from user' 
+0

为什么你在全球范围内免费添加全局变量?你让你的代码更加复杂,并建议使用一个只在你知道自己在做什么时使用的特性,使用一个正常的时态变量或者直接附加它。 – Adirio

+0

我同意。我非常小心地使用全局变量(这就是为什么我已经提到过它),但是如果他需要创建许多变量(数百个变量)会怎么样。这很容易,如果你知道你在做什么。 –

+0

用'object_list.appen(User(v))'替换循环内部的两行,现在可以删除glo = globals(),甚至可以简化循环到'for v in Name:',因为你没有再次使用枚举。另外,你不应该使用大写字母来表示变量名,你应该把名字改成'names',因为它是一个名字列表。我会建议您对帖子进行修改,以便您可以接受。 – Adirio