Skip to content

Instantly share code, notes, and snippets.

@jrdmcgr
Last active August 29, 2015 14:09
Show Gist options
  • Save jrdmcgr/02b099a90dd86c867a06 to your computer and use it in GitHub Desktop.
Save jrdmcgr/02b099a90dd86c867a06 to your computer and use it in GitHub Desktop.
Example of a weak reference.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:c1e171c6468dc10a5f0dbcfb3f292be57b7241f850b5300892f16fe77828df89"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"import weakref\n",
"\n",
"class Client(object):\n",
" def __init__(self, name):\n",
" self.name = name\n",
"\n",
"def callback(obj):\n",
" print('client is going away')\n",
" \n",
"client = Client('foobar')\n",
"ref = weakref.proxy(client, callback)\n",
"\n",
"client.name"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 8,
"text": [
"'foobar'"
]
}
],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ref.name"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 9,
"text": [
"'foobar'"
]
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"del(client)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"client is going away\n"
]
}
],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ref.name"
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "ReferenceError",
"evalue": "weakly-referenced object no longer exists",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mReferenceError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-12-65ab57b7f808>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mref\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mReferenceError\u001b[0m: weakly-referenced object no longer exists"
]
}
],
"prompt_number": 12
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment