2017-10-10 57 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

相關問題