Форум сайта python.su
Маю такий код:
>>> class A(object):pass
...
>>> a = A()
>>> a
<__main__.A object at 0xb7cc9e6c>
>>> '<%s.%s object at ...' % (a.__class__.__module__, a.__class__.__name__)
'<__main__.A object at ...'
PyString_FromFormat("<security proxied %s.%s instance at %p>",
smodule, sname, object);
Отредактировано (Авг. 5, 2008 15:11:30)
Офлайн
def __repr__(self):
return “object at %s” %hex(id(self))
Отредактировано (Авг. 5, 2008 15:13:52)
Офлайн
>>> a
<__main__.A object at 0xb7cc9e6c>
>>> '<%s.%s object at %s' % (a.__class__.__module__, a.__class__.__name__, hex(id(a)))
'<__main__.A object at 0xb7cc9e6cL'
>>>
Офлайн
>>> '<%s.%s object at 0x%x' % (a.__class__.__module__, a.__class__.__name__, id(a))
'<__main__.A object at 0xb7cc9e6c'
>>> a
<__main__.A object at 0xb7cc9e6c>
Офлайн
ага… в продолжение темы:
import weakref
class B():
pass
a = B()
b = weakref.ref(a)
del(a)
print b
Офлайн
static PyObject *
weakref_call(PyWeakReference *self, PyObject *args, PyObject *kw)
{
static char *kwlist[] = {NULL};
if (PyArg_ParseTupleAndKeywords(args, kw, ":__call__", kwlist)) {
PyObject *object = PyWeakref_GET_OBJECT(self);
Py_INCREF(object);
return (object);
}
return NULL;
}
#define PyWeakref_GET_OBJECT(ref) (((PyWeakReference *)(ref))->wr_object)
struct _PyWeakReference {
PyObject_HEAD
/* The object to which this is a weak reference, or Py_None if none.
* Note that this is a stealth reference: wr_object's refcount is
* not incremented to reflect this pointer.
*/
PyObject *wr_object;
/* A callable to invoke when wr_object dies, or NULL if none. */
PyObject *wr_callback;
/* A cache for wr_object's hash code. As usual for hashes, this is -1
* if the hash code isn't known yet.
*/
long hash;
/* If wr_object is weakly referenced, wr_object has a doubly-linked NULL-
* terminated list of weak references to it. These are the list pointers.
* If wr_object goes away, wr_object is set to Py_None, and these pointers
* have no meaning then.
*/
PyWeakReference *wr_prev;
PyWeakReference *wr_next;
};
Отредактировано (Авг. 5, 2008 16:21:44)
Офлайн