看板 Python 關於我們 聯絡資訊
class A(object): instances = [] def __init__ (self): self.value = 0 def __new__(cls): ins = super(A, cls).__new__(cls) A.instances.append(ins) return ins a = A() a.value = 1 b = A() b.value = 2 c = A() c.value = 100 for i in A.instances: print i.value 直接透過__new__()時去記錄,應該會比較直覺吧 ※ 引述《KSJ (阿真)》之銘言: : 假設 : class a(): : pass : 建立好了class : 然後instance : b=a() : b.x=6 : c=a() : c.x=666 : 這樣很明白的有 b 跟 c 二個instance : 可以找出各自的"值" : b.x #6 : c.x #666 : 可是... 如果不知道instance存起來叫b (or c) : 該如何找到 "a class 下曾 instance過的 instance 的"值" 呢" : 我覺得找到instance(也就是b c) 找"值"就簡單了 (就b.x之類的) : 可是不知道怎麼找instance 想請大家幫個忙 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.78.80
KSJ:這招是把instance放在class的屬性裡嗎 囧 好威 11/27 01:49
sbrhsieh:要考慮到這方法等於讓所有 A instance 都無法被回收。 11/27 02:01
godfat:可以用 weakref ? 11/27 02:40
Falldog:嗯 是可以改成weakref就可以解決無法被回收的問題 11/27 08:24
superGA:推 11/27 16:03