{ "metadata": { "name": "", "signature": "sha256:5428ee61d548a6c3eefd868dac96cac83b29f85d9bfd7876e9904bdfe87b0fad" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "

Chapter 11: Introducing the Class

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.1, Page Number: 249

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "class queue:\n", " #Initialize the queue \n", " def __init__(self):\n", " self.__sloc=0\n", " self.__rloc=-1\n", " self.__q=[]\n", " \n", " #Put an integer into the queue\n", " def qput(self,i):\n", " if self.__sloc==100:\n", " print \"Queue is full.\"\n", " return\n", " self.__sloc+=1\n", " self.__q.append(i)\n", " \n", " #Get an integer from the queue\n", " def qget(self):\n", " if self.__rloc==self.__sloc:\n", " print \"Queue underflow\"\n", " return\n", " self.__rloc+=1\n", " return self.__q[self.__rloc] \n", " \n", "\n", " \n", "#Create two queue objects\n", "b=queue()\n", "a=queue()\n", "\n", "a.qput(10)\n", "b.qput(19)\n", "\n", "a.qput(20)\n", "b.qput(1)\n", "\n", "#Result\n", "print \"Contents of queue a: \",\n", "print a.qget(),' ',a.qget()\n", "\n", "print \"Contents of queue b: \",\n", "print b.qget(),' ',b.qget()\n", "\n", "\n", " \n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Contents of queue a: 10 20\n", "Contents of queue b: 19 1\n" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.2, Page Number: 250

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", " \n", "class myclass:\n", " def __init__(self):\n", " self.__a=None #private member\n", " self.b=None #public member\n", " #public functions\n", " def setlab(self,i):\n", " self.__a=i #refer to a\n", " self.b=i*i #refer to b\n", " return\n", " def geta(self):\n", " return self.__a #refer to a\n", " def reset(self):\n", " #call setlab using self\n", " self.setlab(0) #the object is already known\n", " \n", " \n", "ob=myclass()\n", "ob.setlab(5) #set ob.a and ob.b\n", "print \"ob after setlab(5): \",ob.geta(),' ',\n", "print ob.b #can access b because it is public\n", "\n", "ob.b=20 #can access b because it is public\n", "print \"ob after ob.b=20: \",\n", "print ob.geta(),' ',ob.b\n", "\n", "ob.reset()\n", "print \"ob after ob.reset(): \",ob.geta(),' ',ob.b\n", "\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "ob after setlab(5): 5 25\n", "ob after ob.b=20: 5 20\n", "ob after ob.reset(): 0 0\n" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.3, Page Number: 254

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "class queue:\n", " \n", " #Constructor\n", " def __init__(self): \n", " self.__q=[]\n", " self.__rloc=-1\n", " self.__sloc=0\n", " print \"Queue initialized\"\n", " \n", " #Destructor\n", " def __del__(self):\n", " print (\"Queue destroyed\")\n", " \n", " #Put an integer into the queue\n", " def qput(self,i):\n", " if self.__sloc == 100:\n", " print \"Queue is full\"\n", " return \n", " self.__sloc+=1\n", " self.__q.append(i)\n", " \n", " #Get an integer from the queue\n", " def qget(self):\n", " if self.__rloc==self.__sloc:\n", " print \"Queue underflow\"\n", " return\n", " self.__rloc+=1\n", " return self.__q[self.__rloc]\n", " \n", "#Create two queue objects\n", "a=queue()\n", "\n", "\n", "a.qput(10)\n", "a.qput(20)\n", "b=queue()\n", "b.qput(19)\n", "\n", "b.qput(1)\n", "\n", "#Result\n", "print a.qget(),' ',\n", "print a.qget(),' ',\n", "print b.qget(),' ',\n", "print b.qget(),' '\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Queue initialized\n", "Queue destroyed\n", "Queue initialized\n", "Queue destroyed\n", "10 20 19 1 \n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.4, Page Number: 257

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "class queue: \n", " \n", " #Constructor\n", " def __init__(self,i): \n", " self.__q=[]\n", " self.__rloc=-1\n", " self.__sloc=0\n", " self.__who=i\n", " print \"Queue \",self.__who,\" initialized.\"\n", " \n", " #Destructor\n", " def __del__():\n", " print \"Queue \",self.__who,\" destroyed\"\n", " \n", " #Put an integer into the queue\n", " def qput(self,i):\n", " if self.__sloc == 100:\n", " print \"Queue is full\"\n", " return \n", " self.__sloc+=1\n", " self.__q.append(i)\n", " \n", " #Get an integer from the queue\n", " def qget(self):\n", " if self.__rloc==self.__sloc:\n", " print \"Queue underflow\"\n", " return\n", " self.__rloc+=1\n", " return self.__q[self.__rloc]\n", " \n", "a=queue(1)\n", "b=queue(2)\n", "\n", "a.qput(10)\n", "b.qput(19)\n", "\n", "a.qput(20)\n", "b.qput(1)\n", "\n", "#Result\n", "print a.qget(),' ',\n", "print a.qget(),' ',\n", "print b.qget(),' ',\n", "print b.qget(),' '\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Queue 1 initialized.\n", "Queue destroyed\n", "Queue 2 initialized.\n", "Queue destroyed\n", "10 20 19 1 \n" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.5, Page Number: 258

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "class widget:\n", " \n", " #Pass two arguments to the constructor\n", " def __init__(self,a,b):\n", " self.__i=a\n", " self.__j=b\n", " \n", " def put_widget(self):\n", " print self.__i,\" \",self.__j\n", "\n", "#Initializing\n", "x=widget(10,20)\n", "y=widget(0,0)\n", "\n", "x.put_widget()\n", "y.put_widget()\n", "\n", " " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10 20\n", "0 0\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.6, Page Number: 259

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "class myclass:\n", " \n", " #Constructor\n", " def __init__(self,x):\n", " self.a=x\n", " #To get the vale of a\n", " def get_a(self):\n", " return self.a\n", "\n", "#Initializing\n", "ob=myclass(4)\n", "\n", "#Result\n", "print ob.get_a()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "4\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.7, Page Number: 260

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "from ctypes import *\n", "\n", "class c1(Structure):\n", " _fields_=[(\"__i\", c_int)] #private member\n", " def get_i(self): #public finctions\n", " return self.__i\n", " def put_i(self,j):\n", " self.__i=j\n", "\n", "#Variable declaration\n", "s=c1()\n", "\n", "s.put_i(10)\n", "\n", "#Result\n", "print s.get_i()\n", " \n", " " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.8, Page Number: 261

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "class c1:\n", " def __init__(self):\n", " self.__i=None #private member\n", " def get_i(self): #public finctions\n", " return self.__i\n", " def put_i(self,j):\n", " self.__i=j\n", "\n", "#Variable declaration\n", "s=c1()\n", "\n", "s.put_i(10)\n", "\n", "#Result\n", "print s.get_i()\n", " \n", " " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.9, Page Number: 263

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "from ctypes import *\n", "\n", "#Creates a union\n", "class u_type(Union):\n", " _fields_ = [(\"i\",c_short),\n", " (\"ch\", c_char*2)]\n", " #Constructor\n", " def __init__(self,a):\n", " self.i=a\n", " \n", " #Show the characters that comprise a short int.\n", " def showchars(self):\n", " print self.ch[0]\n", " print self.ch[1]\n", " \n", " \n", "u=u_type(1000)\n", "\n", "#Displays char of 1000\n", "u.showchars()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\ufffd\n", "\u0003\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.10, Page Number: 264

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "class c1:\n", " def __init__(self):\n", " self.__i=None\n", " def get_i(self):\n", " return self.i\n", " def put_i(self,j):\n", " self.i=j\n", "\n", "#Variable declaration\n", "s=c1()\n", "\n", "s.put_i(10)\n", "\n", "#Result\n", "print s.get_i()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.11, Page Number: 265

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "class c1:\n", " def __init__(self):\n", " self.__i=None\n", " def get_i(self):\n", " return self.i\n", " def put_i(self,j):\n", " self.i=j\n", "\n", "#Variable declaration\n", "s=c1()\n", "\n", "s.put_i(10)\n", "\n", "#Result\n", "print s.get_i()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10\n" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.12, Page Number: 267

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "class display:\n", " def __init__(self):\n", " width=None\n", " height=None\n", " res=None\n", " def set_dim(self,w,h):\n", " self.width=w\n", " self.height=h\n", " def get_dim(self):\n", " return self.width,self.height\n", " def set_res(self,r):\n", " self.res=r\n", " def get_res(self):\n", " return self.res\n", " \n", "#Variable decleration\n", "names=[\"low\",\"medium\",\"high\"] \n", "(low,medium,high)=(0,1,2) #For enumeration type\n", "w=None\n", "h=None\n", "display_mode=[]*3\n", "\n", "for i in range(3):\n", " display_mode.append(display())\n", "\n", "#Initialize the array of objects using member functions\n", "display_mode[0].set_res(low)\n", "display_mode[0].set_dim(640,480)\n", "\n", "display_mode[1].set_res(medium)\n", "display_mode[1].set_dim(800,600)\n", "\n", "display_mode[2].set_res(high)\n", "display_mode[2].set_dim(1600,1200)\n", "\n", "#Result\n", "print \"Available display modes: \"\n", "for i in range(3):\n", " print names[display_mode[i].get_res()],\" : \",\n", " w,h=display_mode[i].get_dim()\n", " print w,\" by \",h" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Available display modes: \n", "low : 640 by 480\n", "medium : 800 by 600\n", "high : 1600 by 1200\n" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.13, Page Number: 268

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "class samp:\n", " __a=None\n", " def __init__(self,n):\n", " self.__a=n\n", " def get_a(self):\n", " return self.__a\n", "\n", "#Initializing the list\n", "sampArray=[samp(-1),samp(-2),samp(-3),samp(-4)]\n", "\n", "#Display\n", "for i in range(4):\n", " print sampArray[i].get_a(),' '," ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "-1 -2 -3 -4 \n" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.14, Page Number: 269

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\n", "class samp:\n", " __a=None\n", " __b=None\n", " def __init__(self,n,m):\n", " self.__a=n\n", " self.__b=m\n", " def get_a(self):\n", " return self.__a\n", " def get_b(self):\n", " return self.__b\n", " \n", "#Initializing the list\n", "sampArray=[[samp(1,2),samp(3,4)],\n", " [samp(5,6),samp(7,8)],\n", " [samp(9,10),samp(11,12)],\n", " [samp(13,14),samp(15,16)]]\n", "\n", "#Display\n", "for i in range(4):\n", " print sampArray[i][0].get_a(),' ',\n", " print sampArray[i][0].get_b()\n", " print sampArray[i][1].get_a(),' ',\n", " print sampArray[i][1].get_b()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 2\n", "3 4\n", "5 6\n", "7 8\n", "9 10\n", "11 12\n", "13 14\n", "15 16\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.15, Page Number: 270

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "from ctypes import *\n", "\n", "class P_example(Structure):\n", " __num=None\n", " def set_num(self,val):\n", " self.__num=val\n", " def show_num(self):\n", " print self.__num\n", "\n", "#Variable declaration\n", "ob=P_example() #Declare an object to the structure\n", "p=POINTER(P_example) #Declare a pointer to the structure\n", "\n", "ob.set_num(1) #access ob directly\n", "ob.show_num()\n", "\n", "p=ob #assign p the address of ob\n", "p.show_num() #access ob using pointer\n", " \n", " " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1\n", "1\n" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Example 11.16, Page Number: 271

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "class P_example(Structure):\n", " __num=None\n", " def set_num(self,val):\n", " self.__num=val\n", " def show_num(self):\n", " print self.__num\n", " \n", "#Variable declaration\n", "ob=[P_example(),P_example()] #Declare an object to the structure\n", "p=POINTER(P_example) #Declare a pointer to the structure\n", "\n", "ob[0].set_num(10) #access objects directly\n", "ob[1].set_num(20)\n", "\n", "p=ob #obtain pointer to first element\n", "p[0].show_num() #access ob using pointer\n", "\n", "p[1].show_num()\n", "\n", "p[0].show_num()\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10\n", "20\n", "10\n" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }