作者sbrhsieh (偶尔想摆烂一下)
看板Python
标题Re: [问题] 如何找到class的instance??
时间Tue Dec 1 01:08:46 2009
※ 引述《KSJ (阿真)》之铭言:
: ※ 引述《sbrhsieh (偶尔想摆烂一下)》之铭言:
: : 如果你的需求是在任意时刻访问一 class/type 的所有 live object,那麽
: : globals() 回报的 mapping 里有同名的现象(虽然我不认为会有)并无关紧要,
: http://imgur.com/BK9v7.png
: 这个是qgis下的python console
: 红线是我的instance跟module同名部份
: 蓝线是官方的plugin 也跟我的一样有同名的instance跟module
: 似乎是qgis的python console里才会发生的
: 不知道是什麽原因@_@
这麽乱~~~
会不会是某个变数(binding)的值是个 dictionary,而此 dictionary 有同名的
binding,比如说:
A=dict(B='Hello', C='World', D=dict(B=20), E=dict(C=30))
globals()
{'A': {'
C': 'World', 'B': 'Hello', 'E': {'
C': 30}, 'D': {'B': 20}},
'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__',
'__doc__': None}
请你先暂时改成这样子测试,再检验一次。
G = dict(globals())
for k, v in G.iteritems():
print '%s: %s\n' % (k, v)
或者是:
len(globals()), len(set(globals())) # 看两数是否相等。
: 为了这个继承於 "object"
: 我正在努力地看...orz
: http://www.cafepy.com/article/python_types_and_objects/
: python_types_and_objects.html
: (短网址 http://0rz.tw/xy7NW)
: 不过里面有用到object底下的东西吗@_@? (我在字面上看不出来...)
: cls是什麽啊 囧 在我认知里 class下的def 的第一个参数就是他自己(self)
: 用self来解释似乎也通
: 关於 @staticmethod 看了一下官方文件
: 感觉是定义了class下的function
: 这让我对 class 跟 instance 的适用时机 更混杂了 囧
这算是 naming convention,变数(binding)你要怎麽命名都可以,妥善的命名
规则可以帮助程式阅读与理解。
平常命名 instance method 的第一个 formal argument 为 self,是因为这个
变数指涉某种 class 的 instance,如果他会是指涉 class object(object 本身
是个 class),我就会把它命名成 cls(表示 class) or klass。
至於继承自 object 则是为了让正在定义的 class 成为 new style class。
我个人觉得这一页连结的文章都蛮值得看得,除了求 MRO 的演算法可以暂时略过。
http://www.python.org/doc/newstyle/
: : foo.visit_live_objects(dump)
: : # output:
: : # Item 3 Item 0 Item 2 Item 4 Item 1
: 到这里我去查了weak reference...
: 稍稍了解他的用法(就像在此处的用法)
: 不过有没有比较平常的例子??
: 例如创了一个weak reference的变数,wref
: 这个变数感觉上用起来很不踏实 囧
: 因为wref参考的东西随时可能不见
: 这样的东西怎麽用呢
使用 weak reference 就是为了它的特殊行为,它不会增加 referred object 的
reference count。使用 weak reference 的时机通常是我们需要可以 touch 某个
object,但是又不希望因此而妨碍 garbage collector 去收集此 object(或说影响
garbage collector 决定此 object 是否可以再利用)。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.136.253
1F:推 KSJ:实如S大所提...有个plugins 变数 是dict type 囧> 12/01 01:55