Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Iot Systems - Logical Design Using Python: Bahga & Madisetti, © 2015

Download as pdf or txt
Download as pdf or txt
You are on page 1of 31

Chapter 6

IoT Systems –
Logical Design using Python

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Outline

• Introduction to Python
• Installing Python
• Python Data Types & Data Structures
• Control Flow
• Functions
• Modules
• Packages
• File Input/Output
• Date/Time Operations
• Classes

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Python

• Python is a general-purpose high level programming language and suitable for providing a solid
foundation to the reader in the area of cloud computing.

• The main characteristics of Python are:


• Multi-paradigm programming language
• Python supports more than one programming paradigms including object-oriented programming and structured
programming
• Interpreted Language
• Python is an interpreted language and does not require an explicit compilation step. The Python interpreter
executes the program source code directly, statement by statement, as a processor or scripting engine does.
• Interactive Language
• Python provides an interactive mode in which the user can submit commands at the Python prompt and interact
with the interpreter directly.

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Python - Benefits

• Easy-to-learn, read and maintain


• Python is a minimalistic language with relatively few keywords, uses English keywords and has fewer syntactical constructions
as compared to other languages. Reading Python programs feels like English with pseudo-code like constructs. Python is easy
to learn yet an extremely powerful language for a wide range of applications.
• Object and Procedure Oriented
• Python supports both procedure-oriented programming and object-oriented programming. Procedure oriented paradigm
allows programs to be written around procedures or functions that allow reuse of code. Procedure oriented paradigm allows
programs to be written around objects that include both data and functionality.
• Extendable
• Python is an extendable language and allows integration of low-level modules written in languages such as C/C++. This is
useful when you want to speed up a critical portion of a program.
• Scalable
• Due to the minimalistic nature of Python, it provides a manageable structure for large programs.
• Portable
• Since Python is an interpreted language, programmers do not have to worry about compilation, linking and loading of
programs. Python programs can be directly executed from source
• Broad Library Support
• Python has a broad library support and works on various platforms such as Windows, Linux, Mac, etc.

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Python - Setup

• Windows
• Python binaries for Windows can be downloaded from http://www.python.org/getit .
• For the examples and exercise in this book, you would require Python 2.7 which can be directly downloaded from:
http://www.python.org/ftp/python/2.7.5/python-2.7.5.msi
• Once the python binary is installed you can run the python shell at the command prompt using
> python

• Linux
#Install Dependencies
sudo apt-get install build-essential
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

#Download Python
wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tgz
tar -xvf Python-2.7.5.tgz
cd Python-2.7.5

#Install Python
./configure
make
sudo make install

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Numbers
• Numbers
• Number data type is used to store numeric values. Numbers are immutable data types, therefore changing the value of a number data
type results in a newly allocated object.
#Integer #Addition #Division
>>>a=5 >>>c=a+b >>>f=b/a
>>>type(a) >>>c >>>f
<type ’int’> 7.5 0.5
>>>type(c) >>>type(f)
#Floating Point <type ’float’> <type float’>
>>>b=2.5
>>>type(b) #Subtraction #Power
<type ’float’> >>>d=a-b >>>g=a**2
>>>d >>>g
#Long 2.5 25
>>>x=9898878787676L >>>type(d)
>>>type(x) <type ’float’>
<type ’long’>
#Multiplication
#Complex >>>e=a*b
>>>y=2+5j >>>e
>>>y 12.5
(2+5j) >>>type(e)
>>>type(y) <type ’float’>
<type ’complex’>
>>>y.real
2
>>>y.imag
5

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Strings

• Strings
• A string is simply a list of characters in order. There are no limits to the number of characters you can have in a string.

#Create string #Print string #strip: Returns a copy of the string with the
>>>s="Hello World!" >>>print s #leading and trailing characters removed.
>>>type(s) Hello World!
<type ’str’> >>>s.strip("!")
#Formatting output ’Hello World’
#String concatenation >>>print "The string (The string (Hello World!)
>>>t="This is sample program." has 12 characters
>>>r = s+t
>>>r #Convert to upper/lower case
’Hello World!This is sample program.’ >>>s.upper()
’HELLO WORLD!’
#Get length of string >>>s.lower()
>>>len(s) ’hello world!’
12
#Accessing sub-strings
#Convert string to integer >>>s[0]
>>>x="100" ’H’
>>>type(s) >>>s[6:]
<type ’str’> ’World!’
>>>y=int(x) >>>s[6:-1]
>>>y ’World’
100

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Lists
• Lists
• List a compound data type used to group together other values. List items need not all have the same type. A list contains items
separated by commas and enclosed within square brackets.
#Mixed data types in a list
#Create List #Removing an item from a list >>>mixed=[’data’,5,100.1,8287398L]
>>>fruits=[’apple’,’orange’,’banana’,’mango’] >>>fruits.remove(’mango’) >>>type(mixed)
>>>type(fruits) >>>fruits <type ’list’>
<type ’list’> [’apple’, ’orange’, ’banana’, ’pear’] >>>type(mixed[0])
<type ’str’>
#Get Length of List #Inserting an item to a list >>>type(mixed[1])
>>>len(fruits) >>>fruits.insert(1,’mango’) <type ’int’>
4 >>>fruits >>>type(mixed[2])
[’apple’, ’mango’, ’orange’, ’banana’, ’pear’] <type ’float’>
#Access List Elements >>>type(mixed[3])
>>>fruits[1] #Combining lists <type ’long’>
’orange’ >>>vegetables=[’potato’,’carrot’,’onion’,’beans’,’r
>>>fruits[1:3] adish’] #Change individual elements of a list
[’orange’, ’banana’] >>>vegetables >>>mixed[0]=mixed[0]+" items"
>>>fruits[1:] [’potato’, ’carrot’, ’onion’, ’beans’, ’radish’] >>>mixed[1]=mixed[1]+1
[’orange’, ’banana’, ’mango’] >>>mixed[2]=mixed[2]+0.05
>>>eatables=fruits+vegetables >>>mixed
#Appending an item to a list >>>eatables [’data items’, 6, 100.14999999999999, 8287398L]
>>>fruits.append(’pear’) [’appl
>>>fruits e’, #Lists can be nested
[’apple’, ’orange’, ’banana’, ’mango’, ’pear’] ’mang >>>nested=[fruits,vegetables]
o’, >>>nested
’orang [[’apple’, ’mango’, ’orange’, ’banana’, ’pear’],
e’, [’potato’, ’carrot’, ’onion’, ’beans’, ’radish’]]
’banan
a’,
’pear’, ’potato’, ’carrot’, ’onion’, ’beans’, ’radish’]
Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015
Tuples

• Tuples
• A tuple is a sequence data type that is similar to the list. A tuple consists of a number of values separated by commas and enclosed
within parentheses. Unlike lists, the elements of tuples cannot be changed, so tuples can be thought of as read-only lists.

#Create a Tuple #Get an element from a tuple


>>>fruits=("apple","mango","banana","pineapple") >>>fruits[0]
>>>fruits ’apple’
(’apple’, ’mango’, ’banana’, ’pineapple’) >>>fruits[:2]
(’apple’, ’mango’)
>>>type(fruits)
<type ’tuple’> #Combining tuples
>>>vegetables=(’potato’,’carrot’,’onion’,’radish’)
#Get length of tuple >>>eatables=fruits+vegetables
>>>len(fruits) >>>eatables
4 (’apple’, ’mango’, ’banana’, ’pineapple’, ’potato’, ’carrot’, ’onion’, ’radish’)

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Dictionaries

• Dictionaries
• Dictionary is a mapping data type or a kind of hash table that maps keys to values. Keys in a dictionary can be of any data type, though
numbers and strings are commonly used for keys. Values in a dictionary can be any data type or object.

#Create a dictionary #Get all keys in a dictionary #Check if dictionary has a key
>>>student={’name’:’Mary’,’id’:’8776’,’major’:’CS’} >>>student.keys() >>>student.has_key(’name’)
>>>student [’gender’, ’major’, ’name’, ’id’] True
{’major’: ’CS’, ’name’: ’Mary’, ’id’: ’8776’} >>>student.has_key(’grade’)
>>>type(student) #Get all values in a dictionary False
<type ’dict’> >>>student.values()
[’female’, ’CS’, ’Mary’, ’8776’]
#Get length of a dictionary
>>>len(student) #Add new key-value pair
3 >>>student[’gender’]=’female’
>>>student
#Get the value of a key in dictionary {’gende
>>>student[’name’] r’: ’female’, ’major’: ’CS’, ’name’: ’Mary’, ’id’: ’8776’}
’Mary’
#A value in a dictionary can be another dictionary
#Get all items in a dictionary >>>student1={’name’:’David’,’id’:’9876’,’major’:’ECE’}
>>>student.items() >>>students={’1’: student,’2’:student1}
[(’gender’, ’female’), (’major’, ’CS’), (’name’, ’Mary’), >>>students
(’id’, ’8776’)] {’1’:
{’gende
r’: ’female’, ’major’: ’CS’, ’name’: ’Mary’, ’id’: ’8776’}, ’2’:
{’
major’: ’ECE’, ’name’: ’David’, ’id’: ’9876’}}

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Type Conversions

• Type conversion examples

#Convert to string #Convert to long


>>>a=10000 >>>long(b)
>>>str(a) 2013L
’10000’
#Convert to list
#Convert to int >>>s="aeiou"
>>>b="2013" >>>list(s)
>>>int(b) [’a’, ’e’, ’i’, ’o’, ’u’]
2013
#Convert to set
#Convert to float >>>x=[’mango’,’apple’,’banana’,’mango’,’banana’]
>>>float(b) >>>set(x)
2013.0 set([’mango’, ’apple’, ’banana’])

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Control Flow – if statement

• The if statement in Python is similar to the if statement in other languages.

>>>a = 25**5 >>>if a>10000: >>>s="Hello World" >>>student={’name’:’Mary’,’id’:’8776’}


>>>if a>10000: if a<1000000: >>>if "World" in s: >>>if not student.has_key(’major’):
print "More" print "Between 10k and 100k" s=s+"!" student[’major’]=’CS’
else: else: print s
print "Less" print "More than 100k" >>>student
elif a==10000: Hello World! {’major’: ’CS’, ’name’: ’Mary’, ’id’: ’8776’}
More print "Equal to 10k"
else:
print "Less than 10k"

More than 100k

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Control Flow – for statement

• The for statement in Python iterates over items of any sequence (list, string, etc.) in the order in which they
appear in the sequence.
• This behavior is different from the for statement in other languages such as C in which an initialization,
incrementing and stopping criteria are provided.

#Looping over characters in a string #Looping over items in a list #Looping over keys in a dictionary

helloString = "Hello World" fruits=[’apple’,’orange’,’banana’,’mango’] student


=
for c in helloString: i=0 ’nam
print c for item in fruits: e’:
print "Fruit-%d: %s" % (i,item) ’Mar
i=i+1 y’, ’id’: ’8776’,’gender’: ’female’, ’major’: ’CS’

for key in student:


print "%s: %s" % (key,student[key]

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Control Flow – while statement

• The while statement in Python executes the statements within the while loop as long as the while condition is
true.

#Prints even numbers upto 100

>>> i = 0

>>> while i<=100:


if i%2 == 0:
print i
i = i+1

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Control Flow – range statement

• The range statement in Python generates a list of numbers in arithmetic progression.

#Generate a list of numbers from 0 – 9 #Generate a list of numbers from 10 - 100 with increments
of 10
>>>range (10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>>range(10,110,10)
[10, 20, 30, 40, 50, 60, 70, 80, 90,100]

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Control Flow – break/continue statements

• The break and continue statements in Python are similar to the statements in C.
• Break #Break statement example
• Break statement breaks out of the for/while loop >>>y=1
>>>for x in range(4,256,4):
y=y*x
if y > 512:
break
print y
4
32
384

• Continue #Continue statement example


• Continue statement continues with the next iteration. >>>fruits=[’apple’,’orange’,’banana’,’mango’]
>>>for item in fruits:
if item == "banana":
continue
else:
print item

apple
orange
mango

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Control Flow – pass statement

• The pass statement in Python is a null operation.


• The pass statement is used when a statement is required syntactically but you do not want any command or
code to execute.

>fruits=[’apple’,’orange’,’banana’,’mango’]
>for item in fruits:
if item == "banana":
pass
else:
print item

apple
orange
mango

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Functions

• A function is a block of code that takes information in (in the form of students = { '1': {'name': 'Bob', 'grade': 2.5},
parameters), does some computation, and returns a new piece of '2': {'name': 'Mary', 'grade': 3.5},
'3': {'name': 'David', 'grade': 4.2},
information based on the parameter information. '4': {'name': 'John', 'grade': 4.1},
'5': {'name': 'Alex', 'grade': 3.8}}

• A function in Python is a block of code that begins with the keyword


def averageGrade(students):
def followed by the function name and parentheses. The function “This function computes the average grade”
parameters are enclosed within the parenthesis. sum = 0.0
for key in students:
sum = sum + students[key]['grade']
average = sum/len(students)
• The code block within a function begins after a colon that comes after return average
the parenthesis enclosing the parameters.

avg = averageGrade(students)
print "The average garde is: %0.2f" % (avg)
• The first statement of the function body can optionally be a
documentation string or docstring.

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Functions - Default Arguments

• Functions can have default values of the parameters.


• If a function with default values is called with fewer parameters or without any parameter, the default values of the
parameters are used

>>>def displayFruits(fruits=[’apple’,’orange’]):
print "There are %d fruits in the list" % (len(fruits))
for item in fruits:
print item

#Using default arguments


>>>displayFruits()
apple
orange

>>>fruits = [’banana’, ’pear’, ’mango’]


>>>displayFruits(fruits)
banana
pear
mango

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Functions - Passing by Reference

• All parameters in the Python functions are passed by reference.


• If a parameter is changed within a function the change also reflected back in the calling function.

>>>def displayFruits(fruits):
print "There are %d fruits in the list" % (len(fruits))
for item in fruits:
print item
print "Adding one more fruit"
fruits.append('mango')

>>>fruits = ['banana', 'pear', 'apple']


>>>displayFruits(fruits)
There are 3 fruits in the list
banana
pear
apple

#Adding one more fruit


>>>print "There are %d fruits in the list" % (len(fruits))
There are 4 fruits in the list

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Functions - Keyword Arguments

• Functions can also be called using keyword arguments that identifies the arguments by the parameter name when the
function is called.

>>>def #Correct use #name is a formal argument.


printStudentRecords(name,age=20,major=’CS’): >>>printStudentRecords(name=’Alex’) #**kwargs is a keyword argument that receives all
print "Name: " + name Name: Alex arguments except the formal argument as a
print "Age: " + str(age) Age: 20 dictionary.
print "Major: " + major Major: CS
>>>def student(name, **kwargs):
#This will give error as name is required argument >>>printStudentRecords(name=’Bob’,age=22,major=’EC print "Student Name: " + name
>>>printStudentRecords() E’) for key in kwargs:
Traceback (most recent call last): Name: Bob print key + ’: ’ + kwargs[key]
File "<stdin>", line 1, in <module> Age: 22
TypeError: printStudentRecords() takes at least 1 Major: ECE >>>student(name=’Bob’, age=’20’, major = ’CS’)
argument (0 given) Student Name: Bob
>>>printStudentRecords(name=’Alan’,major=’ECE’) age: 20
Name: Alan major: CS
Age: 20
Major: ECE

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Functions - Variable Length Arguments

• Python functions can have variable length arguments. The variable length arguments are passed to as a tuple to the
function with an argument prefixed with asterix (*)

>>>def student(name, *varargs):


print "Student Name: " + name
for item in varargs:
print item

>>>student(’Nav’)
Student Name: Nav

>>>student(’Amy’, ’Age: 24’)


Student Name: Amy
Age: 24

>>>student(’Bob’, ’Age: 20’, ’Major: CS’)


Student Name: Bob
Age: 20
Major: CS

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Modules
#student module - saved as student.py #Using student module
• Python allows organizing the program def averageGrade(students): >>>import student
code into different modules which sum = 0.0 >>>students = '1': 'name': 'Bob', 'grade': 2.5,
improves the code readability and for key in students: '2': 'name': 'Mary', 'grade': 3.5,
management. sum = sum + students[key]['grade'] '3': 'name': 'David', 'grade': 4.2,
average = sum/len(students) '4': 'name': 'John', 'grade': 4.1,
'5': 'name': 'Alex', 'grade': 3.8
• A module is a Python file that defines return average

some functionality in the form of functions def printRecords(students): >>>student.printRecords(students)


or classes. print "There are %d students" %(len(students)) There are 5 students
i=1 Student-1:
• Modules can be imported using the import for key in students: Name: Bob
Grade: 2.5
keyword. print "Student-%d: " % (i)
Student-2:
print "Name: " + students[key]['name']
print "Grade: " + str(students[key]['grade']) Name: David
• Modules to be imported must be present i = i+1 Grade: 4.2
in the search path. Student-3:
Name: Mary
# Importing a specific function from a module Grade: 3.5
>>>from student import averageGrade Student-4:
Name: Alex
# Listing all names defines in a module Grade: 3.8
>>>dir(student) Student-5:
Name: John
Grade: 4.1

>>>avg = student. averageGrade(students)


>>>print "The average garde is: %0.2f" % (avg)
3.62
Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015
Packages

• Python package is hierarchical file structure that consists of # skimage package listing
modules and subpackages. skimage/ Top level package
__init__.py Treat directory as a package
• Packages allow better organization of modules related to a single
application environment. color/ color color subpackage
__init__.py
colorconv.py
colorlabel.py
rgb_colors.py

draw/ draw draw subpackage


__init__.py
draw.py
setup.py

exposure/ exposure subpackage


__init__.py
_adapthist.py
exposure.py

feature/ feature subpackage


__init__.py
_brief.py
_daisy.py
...

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


File Handling

• Python allows reading and writing to files using the file # Example of reading an entire file
object. >>>fp = open('file.txt','r')
>>>content = fp.read()
>>>print content
This is a test file.
• The open(filename, mode) function is used to get a file >>>fp.close()
object.
# Example of reading line by line

>>>fp = open('file1.txt','r')
• The mode can be read (r), write (w), append (a), read and >>>print "Line-1: " + fp.readline()
write (r+ or w+), read-binary (rb), write-binary (wb), etc. Line-1: Python supports more than one programming paradigms.
>>>print "Line-2: " + fp.readline()
Line-2: Python is an interpreted language.
>>>fp.close()
• After the file contents have been read the close function is
called which closes the file object. # Example of reading lines in a loop

>>>fp = open(’file1.txt’,’r’)
>>>lines = fp.readlines()
>>>for line in lines:
print line

Python supports more than one programming paradigms.


Python is an interpreted language.

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


File Handling

# Example of reading a certain number of bytes # Example of seeking to a certain position

>>>fp = open('file.txt','r') >>>fp = open('file.txt','r')


>>>fp.read(10) >>>fp.seek(10,0)
'Python sup' >>>content = fp.read(10)
>>>fp.close() >>>print content
ports more
>>>fp.close()

# Example of getting the current position of read # Example of writing to a file

>>>fp = open('file.txt','r') >>>fo = open('file1.txt','w')


>>>fp.read(10) >>>content='This is an example of writing to a file in
'Python sup' Python.'
>>>currentpos = fp.tell >>>fo.write(content)
>>>print currentpos >>>fo.close()
<built-in method tell of file object at 0x0000000002391390>
>>>fp.close()

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Date/Time Operations

• Python provides several functions for date and time access and conversions.
• The datetime module allows manipulating date and time in several ways.
• The time module in Python provides various time-related functions.

# Examples of manipulating with date # Examples of manipulating with time

>>>from datetime import date >>>import time


>>>nowtime = time.time()
>>>now = date.today() >>>time.localtime(nowtime)
>>>print "Date: " + now.strftime("%m-%d-%y") time.struct_time(tm_year=2013, tm_mon=7, tm_mday=24, tm_ec=51, tm_wday=2, tm_yday=205,
Date: 07-24-13 tm_isdst=0)

>>>print "Day of Week: " + now.strftime("%A") >>>time.asctime(time.localtime(nowtime))


Day of Week: Wednesday 'Wed Jul 24 16:14:51 2013'

>>>print "Month: " + now.strftime("%B") >>>time.strftime("The date is %d-%m-%y. Today is a %A. It is %H hours, %M minutes and %S seconds now.")
Month: July 'The date is 24-07-13. Today is a Wednesday. It is 16 hours, 15 minutes and 14 seconds now.'

>>>then = date(2013, 6, 7)
>>>timediff = now - then
>>>timediff.days
47

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Classes

• Python is an Object-Oriented Programming (OOP) language. Python provides all the standard features of Object
Oriented Programming such as classes, class variables, class methods, inheritance, function overloading, and
operator overloading.
• Class
• A class is simply a representation of a type of object and user-defined prototype for an object that is composed of three things: a name,
attributes, and operations/methods.
• Instance/Object
• Object is an instance of the data structure defined by a class.
• Inheritance
• Inheritance is the process of forming a new class from an existing class or base class.
• Function overloading
• Function overloading is a form of polymorphism that allows a function to have different meanings, depending on its context.
• Operator overloading
• Operator overloading is a form of polymorphism that allows assignment of more than one function to a particular operator.
• Function overriding
• Function overriding allows a child class to provide a specific implementation of a function that is already provided by the base class. Child class
implementation of the overridden function has the same name, parameters and return type as the function in the base class.

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Class Example

• The variable studentCount is a # Examples of a class >>>s = Student(’Steve’,’98928’)


class Student: Constructor called
class variable that is shared by studentCount = 0
all instances of the class >>>s.addGrade(’Math’,’90’)
Student and is accessed by def __init__(self, name, id): >>>s.addGrade(’Physics’,’85’)
print "Constructor called" >>>s.printGrades()
Student.studentCount. self.name = name Physics: 85
self.id = id Math: 90
• The variables name, id and Student.studentCount = Student.studentCount + 1
grades are instance variables self.grades={} >>>mathgrade = s.getGrade(’Math’)
which are specific to each >>>print mathgrade
def __del__(self): 90
instance of the class. print "Destructor called"
>>>count = s.getStudentCount()
• There is a special method by def getStudentCount(self): >>>print count
the name __init__() which is return Student.studentCount 1
the class constructor.
def addGrade(self,key,value): >>>del s
• The class constructor self.grades[key]=value Destructor called
def getGrade(self,key):
initializes a new instance return self.grades[key]
when it is created. The
function __del__() is the class def printGrades(self):
for key in self.grades:
destructor print key + ": " + self.grades[key]

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Class Inheritance
• In this example Shape is the base class and Circle is the derived class. The class Circle inherits the attributes of the Shape class.
• The child class Circle overrides the methods and attributes of the base class (eg. draw() function defined in the base class Shape is overridden in child
class Circle).

# Examples of class inheritance class Circle(Shape): class Point: >>>p = Point(2,4)


class Shape: def __init__(self, c,r): def __init__(self, x, y): >>>circ = Circle(p,7)
def __init__(self): print "Child class constructor" self.xCoordinate = x Child class constructor
print "Base class constructor" self.center = c self.yCoordinate = y >>>circ.getColor()
self.color = ’Green’ self.radius = r ’Green’
self.lineWeight = 10.0 self.color = ’Green’ def setXCoordinate(self,x): >>>circ.setColor(’Red’)
self.lineWeight = 10.0 self.xCoordinate = x >>>circ.getColor()
def draw(self): self.__label = ’Hidden circle label’ ’Red’
print "Draw - to be implemented" def getXCoordinate(self): >>>circ.getLineWeight()
def setColor(self, c): def setCenter(self,c): return self.xCoordinate 10.0
self.color = c self.center = c >>>circ.getCenter().getXCoordinate()
def getColor(self): def getCenter(self): def setYCoordinate(self,y): 2
return self.color return self.center self.yCoordinate = y >>>circ.getCenter().getYCoordinate()
4
def setLineWeight(self,lwt): def setRadius(self,r): def getYCoordinate(self): >>>circ.draw()
self.lineWeight = lwt self.radius = r return self.yCoordinate Draw Circle (overridden function)
>>>circ.radius
def getLineWeight(self): def getRadius(self): 7
return self.lineWeight return self.radius

def draw(self):
print "Draw Circle (overridden function)"

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015


Further Reading

• Code Academy Python Tutorial, http://www.codecademy.com/tracks/python


• Google's Python Class, https://developers.google.com/edu/python/
• Python Quick Reference Cheat Sheet, http://www.addedbytes.com/cheat-sheets/python-cheat-sheet/
• PyCharm Python IDE, http://www.jetbrains.com/pycharm/

Book website: http://www.internet-of-things-book.com Bahga & Madisetti, © 2015

You might also like