按照下面的代碼,輸出的全是9。
而想要的是每次回圈都創建一個物件來容納不同的資料,請教如何可以在每次回圈中都創建一個新物件?
class Comment():
def __init__(self):
pass
def lop():
comments = []
for i in range(10):
comment = Comment
comment.idx = i
comments.append(comment)
return comments
if __name__ == '__main__':
comments = lop()
# print(len(comments))
for idx in range(len(comments)):
print(comments[idx].idx)
uj5u.com熱心網友回復:
為什么不加括號,實體化的物件會被再次參考?!uj5u.com熱心網友回復:
第 9 行 :
comment = Comment() # 實體化需要加括號
你沒加括號,賦值操作,comment 等同于類 Comment ,等同于給類 Comment 添加靜態屬性 idx
Comment.idx = i
所以你 append 的是類物件 Comment,并不是它的實體, idx 是 Comment 的靜態屬性,最終賦值9
uj5u.com熱心網友回復:
for idx in range(len(comments)):
print(comments[idx].idx)
看這個寫法,就是別的語言轉來的
uj5u.com熱心網友回復:
class Comment():
def __init__(self):
pass
def lop():
comments = []
for i in range(10):
comment = Comment()
comment.idx = i
comments.append(comment)
return comments
if __name__ == '__main__':
comments = lop()
# print(len(comments))
for idx in range(len(comments)):
print(comments[idx].idx)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/184913.html
