Skip to content

Instantly share code, notes, and snippets.

@suranands
Created December 26, 2014 12:44
Show Gist options
  • Save suranands/8a7bcf79051cf9d57cd8 to your computer and use it in GitHub Desktop.
Save suranands/8a7bcf79051cf9d57cd8 to your computer and use it in GitHub Desktop.
OOPython
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Finally on the page 33 of the book I mentioned on 24th of this month (These files are saved dated). \n",
"**Python 3 Object Oriented Program ~ Dusty Phillips; 2010 PACKT Publishing**"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# The simpleplot.py example below required that I do this step in first cell of this notebook for inline graphics.\n",
"# Why I needed to run this script is to learn %edit and %run commands, known as magic commands in IPy.\n",
"%matplotlib inline"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# An example class for syntax:\n",
"class MyFirstClass:\n",
" pass"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a = MyFirstClass()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"b = MyFirstClass()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(a)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"<__main__.MyFirstClass instance at 0xb66ce3ac>\n"
]
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(b)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"<__main__.MyFirstClass instance at 0xb66d1a0c>\n"
]
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"cd /home/gls/Downloads/"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"/home/gls/Downloads\n"
]
}
],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ls *.py"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"simpleplot.py\r\n"
]
}
],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"run simpleplot.py"
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "ImportError",
"evalue": "No module named pylab",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc\u001b[0m in \u001b[0;36mexecfile\u001b[0;34m(fname, *where)\u001b[0m\n\u001b[1;32m 202\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[0mfilename\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfname\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 204\u001b[0;31m \u001b[0m__builtin__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexecfile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0mwhere\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m/home/gls/Downloads/simpleplot.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mscipy\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mpylab\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0marange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mt\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mImportError\u001b[0m: No module named pylab"
]
}
],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pylab"
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "ImportError",
"evalue": "No module named pylab",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-11-0c66bb86b884>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mpylab\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mImportError\u001b[0m: No module named pylab"
]
}
],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import matplotlib"
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "ImportError",
"evalue": "No module named matplotlib",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-12-82be63b7783c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mImportError\u001b[0m: No module named matplotlib"
]
}
],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import scipy # So, all I need to install for pylab to work is matplotlib...okay!"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pylab"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"run simpleplot.py"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEbCAYAAAAxukhGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtU1HXi//EnZtgFdMMLijKJUiom4BcYL7k2uZmrWxLm\n3WzTrN2WtuJrP7fNXUJcs9w2162vJZzCPH0zakMX0y5rhaap5IqmmxXCZCJqqaxJCojz+f0xXydw\nULl95gKvxzlzDsO8+czrUM6Lz+39DjAMw0BERKSGNt4OICIivkflICIiblQOIiLiRuUgIiJuVA4i\nIuJG5SAiIm5UDtJqpKWlMXr0aG/HuKjly5fTr18/b8cQUTmINNamTZvo1q2b197/yJEjfPjhh157\nf2nZVA4ijTRs2DAOHTrktfd/5513SE5O9tr7S8umchC/l56eTq9evejQoQMjRozg5MmTdY4LCAjA\nMAxmz55Np06diIqKYsuWLa7XH3jgASwWCz/5yU8YP348Z8+eBeD7779nzJgxdOzYkdDQUHbt2gVA\nXl4eV155pevnDx8+zKRJk+jatSvdunXjiSeeqDNHz549WbRoEcOGDSMkJITx48dTXl5e59ivvvqK\nW265xZU3OzsbgL1795KcnExhYSHXXHMNCxcubPgvTuQiVA7i9/7rv/6Lzz77jIMHD/LVV1/x5ptv\n1jnOMAy2bt3KoEGDOHr0KLNmzWLatGmcm0Hm1ltvpbCwkM8//5x169axceNGAFasWEFlZSXHjh1j\n3759REZG1rn9KVOmUFlZSWFhIaWlpTzwwAN1jgsICGD16tW8+uqrlJSUUFJSwqJFi9zGnTlzhttu\nu41Ro0bx3Xff8dprr/HAAw+wfft2+vXrx9KlS7nuuusoKyvj97//fWN+dSIXpHIQv3fbbbcRFBRE\nUFAQ1113HceOHbvg2KFDhzJx4kQAZs2axddff82+ffsASEpKol27doSFhREaGsrRo0cB6NKlC7t2\n7WLNmjUEBwdz9dVXu233wIEDbNiwgcWLFxMcHExAQABdu3a9YI5HHnmEnj17ctVVVzFt2jTWr1/v\nNmbbtm0cPnyY2bNnExAQQGxsLImJiaxYsQIATYsmZlI5iN976623uPHGG+nWrRubNm266IdmzdeC\ng4Np06YNJ06cAGDZsmXEx8cTGhrKN9984xo7ceJE5syZw913382gQYPYv3+/23YPHTpEQEAAERER\n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\n",
"text": [
"<matplotlib.figure.Figure at 0xb1a588ec>"
]
}
],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"pwd"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 19,
"text": [
"u'/home/gls/Downloads'"
]
}
],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ls *.py"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"ls: cannot access *.py: No such file or directory\r\n"
]
}
],
"prompt_number": 20
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"cd /wine/Programming\\ 10Aug2014"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"/wine/Programming 10Aug2014\n"
]
}
],
"prompt_number": 21
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"cd Python\\ Aug\\ 2013"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"/wine/Programming 10Aug2014/Python Aug 2013\n"
]
}
],
"prompt_number": 22
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"cd python_9oct14/OOPy/OOPy_Practicals20d14/"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"/wine/Programming 10Aug2014/Python Aug 2013/python_9oct14/OOPy/OOPy_Practicals20d14\n"
]
}
],
"prompt_number": 23
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ls *.py"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\u001b[0m\u001b[01;32msimpleplot.py\u001b[0m*\r\n"
]
}
],
"prompt_number": 24
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"edit -n simpleplot.py"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"IPython will make a temporary file named: /tmp/ipython_edit_dmpPIW.py\n"
]
}
],
"prompt_number": 27
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"cat /tmp/ipython_edit_dmpPIW.py"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"cat: /tmp/ipython_edit_dmpPIW.py: No such file or directory\r\n"
]
}
],
"prompt_number": 28
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Okay okay I am going offtrack."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ls"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\u001b[0m\u001b[01;32mfirst_class.py\u001b[0m* \u001b[01;32mOOPy_Practice_24d14.ipynb\u001b[0m* \u001b[01;32mOOPy_Practice_25d14.ipynb\u001b[0m* \u001b[01;32mOOPy_Practice_26d14.ipynb\u001b[0m* \u001b[01;32mREADME.txt\u001b[0m* \u001b[01;32msimpleplot.py\u001b[0m*\r\n"
]
}
],
"prompt_number": 30
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"python -i first_class.py"
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "SyntaxError",
"evalue": "invalid syntax (<ipython-input-31-037ea0232978>, line 1)",
"output_type": "pyerr",
"traceback": [
"\u001b[0;36m File \u001b[0;32m\"<ipython-input-31-037ea0232978>\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m python -i first_class.py\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
]
}
],
"prompt_number": 31
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"run first_class.py"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 32
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"c = MyFirstClass()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 33
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(c)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"<__main__.MyFirstClass instance at 0xb14e8c0c>\n"
]
}
],
"prompt_number": 34
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* What I did above is instantiating a python object, although the class I created has nothing to perform. c is an object.\n",
"* The real useful classes have data and attributes in them than can be used for performaing a variety of tasks."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"class Point:\n",
" pass"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 35
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"p1 = Point()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 36
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"p2 = Point()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 37
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"p1.x = 5\n",
"p1.y = 4"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 38
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"p2.x = 3\n",
"p2.y = 6"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 39
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(p1)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"<__main__.Point instance at 0xb14e8d2c>\n"
]
}
],
"prompt_number": 40
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(p1.x,p1.y)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(5, 4)\n"
]
}
],
"prompt_number": 41
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(p2.x,p2.y)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(3, 6)\n"
]
}
],
"prompt_number": 42
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"P1 = (p1.x,p1.y)\n",
"P2 = (p2.x,p2.y)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'tuple' object has no attribute 'x'",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-45-7ba488694b1e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mP1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mp1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mp1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mP2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mp2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mp2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m: 'tuple' object has no attribute 'x'"
]
}
],
"prompt_number": 45
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(P1)\n",
"print(P2)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'P2' is not defined",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-44-e31eac9ee18a>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mP1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mP2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'P2' is not defined"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(5, 4)\n"
]
}
],
"prompt_number": 44
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(p2)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(3, 6)\n"
]
}
],
"prompt_number": 46
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* What's done now is creating an emty class again, called Point, without data and attributes.\n",
"* But data and attributes are given at the time instantiating objects in this class using dot notation.\n",
"* All we need to do to assign a value to an attribute on an object is use the syntax `<object>.<attribute> = <value>`."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"class Point:\n",
" def reset(self):\n",
" self.x = 0\n",
" self.y = 0"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 47
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"p = Point()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 48
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"p.reset()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 49
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(p.x,p.y)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(0, 0)\n"
]
}
],
"prompt_number": 50
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"class Point2:\n",
" def reset2(self):\n",
" self.a = 0\n",
" self.b = 0\n",
"\n",
"q = Point2()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 51
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(q.a,q.b)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "Point2 instance has no attribute 'a'",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-52-904245d7b309>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m: Point2 instance has no attribute 'a'"
]
}
],
"prompt_number": 52
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"q.reset2()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 53
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(q.a,q.b)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(0, 0)\n"
]
}
],
"prompt_number": 54
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Found it [somewhere online](http://www.reddit.com/r/Python/comments/2fl6oy/for_the_life_of_me_i_cant_figure_out_oop_can/). Interesting! Whatever online resources I explored so far didn't really make me completely understand the concept of OOP. I am trying.\n",
"\n",
"> If you have a class Animal, then there may be a function Animal.run(). You may define a class Fox and a class Tiger that inherit from Animal, and they automatically get the run() function. But you can customize specific behavior, in this case the behavior of run(). So for example you can make your Tiger leap when running, and your Fox stride when running, or something along those lines.\n",
"\n",
"> OOP is really as simple as that. The only other component to understand is the self argument, which you don't really need to understand right now. All you really need to know is that self is just like a variable and function namespace but for each time your class is used. Each time you create a new instance of a class (like by doing enemy = Tiger()) think of it like creating a new Python dict that has some pre-set variables and functions, and think of self as a way for your class to access its version of that dict.\n",
"\n",
"> If you're asking yourself \"why should I do any of this when I can just make a few regular functions?\", then know that this is the question you should be asking. Many times you will have no need to create a new class. You will frequently use other classes, like ones in the Python standard library, but you may not need to make any of your own. Once you start programming more you'll understand when and where to create classes."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Now following somebody's suggestion on the same website, I just ordered a book called Head First Object Oriented Analysis & Design. Waiting .... !"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment