作者KSJ (阿真)
看板Python
标题Re: [问题] 如何找到class的instance??
时间Fri Nov 27 04:21:23 2009
※ 引述《KSJ (阿真)》之铭言:
: ※ 引述《sbrhsieh (偶尔想摆烂一下)》之铭言:
: : 我认为在讨论这个主题之前有必要先厘清一点:
: : 何谓 "a class 曾 instance 过的 instance"?
: : 举例来说,假设你有一个可以 return 上述的集合的 function: get_a_instances,
: : 那麽下面的码中集合 all_a 应该包含几个物件?
: : a()
: : a()
: : all_a = get_a_instances()
: 以我的观点来说
: 应该是0个
: 因为没有存起来
: 也就是 如果是下面的话
: b=a()
: c=a()
: all_a 会是二个
: all_a[0] 是b这个instance
: all_a[1] 是c这个instance
: 好让我能找到 b底下的一些参数
: 其实我也不懂为什麽globals() 里面会有同名的module跟instance
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这句话就好像 在dictionary里 有二个一样的key
但里面存着不同的东西
不可思议 但在qgis的python console下真的存在@_@a
我目前的解决辨法是 类似於 前几篇的文章中
"把instance放入instance的property中"
不过因为instance抓不到 所以也没辨法抓到instance中的property
所以我就把 "instance放入比它自己还上一层的某个class的property中"
(我想我说的class应该也是某个instance吧)
再去看它的 property 就是 我想要的instance了
不过这的确会碰到 所谓的 每个instance都会不能清除的问题
以我的case来说 我想到二个原因 觉得应该还好
1.我的instance只在qgis软体打开的时候被软体自动instance一次
使用者虽然也可以透过qgis下的pyhton console来新建instance
但机会应该不大 (一般使用者都用GUI)
2.如果需要新建instance
将其放在同一个class(或是叫instance)的property下
感觉可以解决清除的问题
不过是需要比较注意就是了
会有这样的问题 主要是想让我的无脑debug法变得稍微有脑一点orz...
目前运行的结果还算理想 也谢谢大家的帮忙<(_ _)>
: 我在python shell 下中
: import sys
: 我看globals()下 有sys module
: sys=a()
: 我看globals()下 有sys 是a的instance
: 再import sys
: 又是变回 sys module
: 试不出怎麽会有同名的东西 感觉很奇怪 目前还在思索中
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.63.180
※ 编辑: KSJ 来自: 140.112.63.180 (11/27 04:22)