作者Falldog (偏執狂)
看板Python
標題Re: [問題] 如何找到class的instance??
時間Fri Nov 27 01:42:00 2009
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