擅长:python、mysql、java
<p>下面是将描述符用于类的一种方法:</p>
<pre><code>import weakref
class classproperty(object):
def __init__(self, fget):
self.fget = fget
def __get__(self, owner_self, owner_cls):
return self.fget(owner_cls)
class A(object):
_instances = []
def __init__(self):
self._instances.append(weakref.ref(self))
@classproperty
def instances(cls):
for inst_ref in cls._instances:
inst = inst_ref()
if inst is not None:
yield inst
foo = A()
bar = A()
for inst in A.instances:
print inst
</code></pre>
<p>参考文献:</p>
<ul>
<li><a href="https://docs.python.org/2/reference/datamodel.html#invoking-descriptors" rel="noreferrer">https://docs.python.org/2/reference/datamodel.html#invoking-descriptors</a></li>
<li><a href="https://stackoverflow.com/a/13624858/8747">https://stackoverflow.com/a/13624858/8747</a></li>
</ul>