我有一個擁有數千個實例的Python類。如何獲得一個類的所有實例的變量的值
每個實例都包含多個變量。
我需要檢索該類的所有實例的特定列表變量的值。
我相信這與做...
__dict__
我似乎無法得到正確的語法來獲得我所需要的數據。
我知道這是一個簡單的1行代碼。任何人都知道該代碼是什麼?
我有一個擁有數千個實例的Python類。如何獲得一個類的所有實例的變量的值
每個實例都包含多個變量。
我需要檢索該類的所有實例的特定列表變量的值。
我相信這與做...
__dict__
我似乎無法得到正確的語法來獲得我所需要的數據。
我知道這是一個簡單的1行代碼。任何人都知道該代碼是什麼?
正如克勞斯·d說,你應該保持一個手動列表。但是,如果所有這些實例都存在於一個函數的本地範圍內,則下面的代碼顯示瞭如何獲取它們。但即使這是可能的,我強烈建議你不是做這種事情。
#! /usr/bin/env python
import random
class myclass():
def __init__(self, data):
self.data = data
def main():
random.seed(42)
#Create some instances of myclass
for i in range(10):
s = "a%02d = myclass(%d)" % (i, random.randint(0, 99))
print s
exec(s) in globals(), locals()
#Extract all instances of myclass from the locals() dict
instances = dict((k, v) for k, v in locals().items() if isinstance(v, myclass))
for name in sorted(instances.keys()):
print "%s : %2d" % (name, instances[name].data)
if __name__ == "__main__":
main()
輸出
a00 = myclass(63)
a01 = myclass(2)
a02 = myclass(27)
a03 = myclass(22)
a04 = myclass(73)
a05 = myclass(67)
a06 = myclass(89)
a07 = myclass(8)
a08 = myclass(42)
a09 = myclass(2)
a00 : 63
a01 : 2
a02 : 27
a03 : 22
a04 : 73
a05 : 67
a06 : 89
a07 : 8
a08 : 42
a09 : 2
你需要證明你的嘗試和類的例子! – Kasramvd 2014-10-17 09:44:50
沒有辦法得到一個類的所有實例的列表。您將不得不手動維護這樣的列表。 'weakref'模塊可能對此有所幫助。 – 2014-10-17 09:49:50