Genome 559: Introduction to Statistical and Computational Genomics Elhanan Borenstein Classes and Objects Object Oriented Programming.

Slides:



Advertisements
Similar presentations
Exception Handling Genome 559. Review - classes 1) Class constructors - class myClass: def __init__(self, arg1, arg2): self.var1 = arg1 self.var2 = arg2.
Advertisements

Genome 559: Introduction to Statistical and Computational Genomics Elhanan Borenstein Classes and Objects Object Oriented Programming.
Python Objects and Classes
Lecture 04 – Classes.  Python has a number of classes built-in  lists, dictionaries, sets, int, float, boolean, strings  We can define our own classes.
Genome 559: Introduction to Statistical and Computational Genomics Elhanan Borenstein Classes and Objects Object Oriented Programming.
Recursion Genome 559: Introduction to Statistical and Computational Genomics Elhanan Borenstein.
Classes 2 COMPSCI 105 SS 2015 Principles of Computer Science.
Composition CMSC 202. Code Reuse Effective software development relies on reusing existing code. Code reuse must be more than just copying code and changing.
Genome 559: Introduction to Statistical and Computational Genomics Elhanan Borenstein More on Classes, Biopython.
Introduction to Python
CS 1 with Robots Variables, Data Types & Math Institute for Personal Robots in Education (IPRE)‏
Guide to Programming with Python
REFERENCES: CHAPTER 8 Object-Oriented Programming (OOP) in Python.
Guide to Programming with Python Chapter Two Basic data types, Variables, and Simple I/O: The Useless Trivia Program.
Python Crash Course Classes 3 rd year Bachelors V1.0 dd Hour 7.
Floating point numbers in Python Floats in Python are platform dependent, but usually equivalent to an IEEE bit C “double” However, because the significand.
1 Python Control of Flow and Defining Classes LING 5200 Computational Corpus Linguistics Martha Palmer.
Introduction to Python Lecture 1. CS 484 – Artificial Intelligence2 Big Picture Language Features Python is interpreted Not compiled Object-oriented language.
Introduction to Python
Chapter 11 Introduction to Classes Intro to Computer Science CS1510, Section 2 Dr. Sarah Diesburg.
CSC1018F: Object Orientation, Exceptions and File Handling Diving into Python Ch. 5&6 Think Like a Comp. Scientist Ch
C++ Programming for Graphics Lecture 5 References, New, Arrays and Destructors.
Classes and Objects The basics. Object-oriented programming Python is an object-oriented programming language, which means that it provides features that.
Classes 1 COMPSCI 105 S Principles of Computer Science.
With Python.  One of the most useful abilities of programming is the ability to manipulate files.  Python’s operations for file management are relatively.
Functions. Built-in functions You’ve used several functions already >>> len("ATGGTCA")‏ 7 >>> abs(-6)‏ 6 >>> float("3.1415")‏ >>>
CLASSES Python Workshop. Introduction  Compared with other programming languages, Python’s class mechanism adds classes with a minimum of new syntax.
CS 1 with Robots Variables, Data Types & Math Institute for Personal Robots in Education (IPRE)‏ Sec 9-7 Web Design.
1 Programming for Engineers in Python Autumn Lecture 6: More Object Oriented Programming.
Working With Objects Tonga Institute of Higher Education.
Object Oriented Programing (OOP)
Introduction to Python Dr. José M. Reyes Álamo. 2 Three Rules of Programming Rule 1: Think before you program Rule 2: A program is a human-readable set.
Classes COMPSCI 105 SS 2015 Principles of Computer Science.
By Austin Laudenslager AN INTRODUCTION TO PYTHON.
Guide to Programming with Python Chapter Eight (Part I) Object Oriented Programming; Classes, constructors, attributes, and methods.
1 CS161 Introduction to Computer Science Topic #16.
Chapter 17 Q and A Victor Norman, et al. CS104. What is Object-oriented Programming? Q: What is object-oriented programming? A: It means defining classes/objects,
1 CS161 Introduction to Computer Science Topic #15.
Data Manipulation Variables, Data Types & Math. Aug Variables A variable is a name (identifier) that points to a value. They are useful to store.
Data Handling in Algorithms. Activity 1 Starter Task: Quickly complete the sheet 5mins!
Q and A for Sections 6.2, 6.3 Victor Norman CS106.
Functions CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
National Diploma Unit 4 Introduction to Software Development Procedures and Functions.
Introduction to Python Lesson 2a Print and Types.
Python programming - Defining Classes
Topics Designing a Program Input, Processing, and Output
Classes and Objects – digging deeper
COMPSCI 107 Computer Science Fundamentals
CSSE 120—Rose Hulman Institute of Technology
Containers and Lists CIS 40 – Introduction to Programming in Python
CS-104 Final Exam Review Victor Norman.
Copyright (c) 2017 by Dr. E. Horvath
Functions CIS 40 – Introduction to Programming in Python
Introduction to Object-Oriented Programming (OOP)
Object Oriented Programming
Introduction to Object-Oriented Programming (OOP) II
Coding Concepts (Sub- Programs)
Introduction to Object-Oriented Programming (OOP)
Variables, Data Types & Math
Objects (again) Professor Hugh C. Lauer CS-1004 — Introduction to Programming for Non-Majors (Slides include materials from Python Programming: An Introduction.
Variables, Data Types & Math
Topics Designing a Program Input, Processing, and Output
Topics Designing a Program Input, Processing, and Output
Variables, Data Types & Math
Introducing JavaScript
COMPUTER PROGRAMMING SKILLS
Chapter 9 Introduction To Classes
Introduction to Object-Oriented Programming (OOP)
Introduction to Object-Oriented Programming (OOP) II
Presentation transcript:

Genome 559: Introduction to Statistical and Computational Genomics Elhanan Borenstein Classes and Objects Object Oriented Programming

A quick review  A class defines variables’ types: 1.What kind of data is stored (members) 2.What are the available functions (methods)  An object is an instance of a class:  string is a class; my_str = “AGGCGT” creates an object of the class string, called my_str.  Why classes:  Bundle together data and operations on data  Allow special operations appropriate to data  Allow context-specific meaning for common operations  Help organize your code and facilitates modular design  The human factor

A Date class example class Date: day = 0 month = "None" def printUS(self): print self.month, "/", self.day def printUK(self): print self.day, ".", self.month mydate = Date() mydate.day = 15 mydate.month= "Jan" mydate.printUS() Jan / 15 mydate.printUK() 15. Jan class functions (methods) Access (call) functions of this Date object Where did the argument go? Define the class Date Create and initialize class members Special name “self” refers to the current object (no matter what the caller named it). Access data members of this Date object

An even better Date class class Date: def __init__(self, day, month): self.day = day self.month = month def printUS(self): print self.mon, "/", self.day def printUK(self): print self.day, ".", self.mon mydate = Date(15,"Jan") mydate.printUS() Jan / 15 mydate2 = Date(22,“Nov") mydate2.printUK() 22. Nov Note the magical first arguments: __init__ defined w/ 3 args; called w/ 2; printUS defined w/ 1 arg; called w/ 0. mydate is passed in both cases as 1 st arg, so each function knows on which object it is to act Special function “_ _init_ _” is called whenever a Date object instance is created. (class constructor) It makes sure the object is properly initialized Now, when “constructing” a new Date object, the caller MUST supply required data

Class declarations and usage - Summary  The class statement defines a new class  Remember the colon and indentation  You can include data members (variables) and functions as part of your class. These will be accessed using the dot (.) notation (e.g., mydate.day)  The special name self means the current object  self. refers to instance variables of the class  self is automatically passed to each method as a 1 st argument class : …

Second thoughts …  True, we now have a “print” function, but can we somehow make printing more intuitive?  Specifically, why is “print” fine for numbers, strings, etc. >>> my_str = “hello” >>> my_num = 5 >>> print my_str, my_num “hello” 5 but funky for class instances? >>> print mydate  Yes, mydate.printUS() works, but seems clunky …

A better way to print objects  Actually, “print” doesn’t have special knowledge of how to print numbers, lists, etc.  It just knows how to print strings, and relies on each class to have a __str__() method that returns a string representing the object.  You can write your own, tailored __str__() method to give prettier/more useful results

A super Date class class Date: def __init__(self, day, month): self.day = day self.month = month def __str__(self) : day_str = ‘%s’ % self.day mon_str = ‘%s’ % self.month return mon_str + “-” + day_str birthday = Date(3,”Sep”) print “It’s ”, birthday, “. Happy Birthday!” It’s Sep-3. Happy Birthday!

Advanced topic: Allowing the plus sign  Similarly, how come “+” works (but differently) for numbers and strings but not for dates?  Yes, we could write a function addDays(n) : party = birthday.addDays(4)  But … would be much more natural (and way cooler) to be able to write: party = birthday + 4  Can we do it?

Operator overloading  Yes! Again, ‘+’ isn’t as smart as you thought; it calls class-specific “add” methods _ _add_ _() to do the real work.  We can make new classes, like Date, behave like built- in ones  Common operator overloading methods:  _ _init_ _ # object creation  _ _add_ _ # addition (+)  _ _mul_ _ # multiplication (*)  _ _sub_ _ # subtraction (-)  _ _lt_ _ # less than (<)  _ _str_ _ # printing  _ _call_ _ # function calls  Many more...

Sample problem #1  Write a Python class called HL, which will be used to include a horizontal line when you print.  The class constructor should get a string s and an integer l and when printed it should print l repetitions of the string s (and the necessary newline characters). >>> myHL1 = HL('=',20) >>> print ‘Title', myHL1, ‘The rest of the text' Title ==================== The rest of the text >>> myHL2 = HL('*-',5); >>> print ‘Title', myHL2, ‘The rest of the text' Title *-*-*-*-*- The rest of the text

class HL: def __init__(self,str,len): self.s = str self.l = len def __str__(self): line = self.s * self.l return '\n' + line + '\n' Solution #1

Sample problem #2  Change the Date class such that the month is represented as a number rather than as a string. (What did you have to do to make this change?)  Add the function addMonths(n) to the class Date. This function should add n months to the current date. Make sure to correctly handle transitions across years. (Hint: the modulo operator, %, returns the remainder in division: 8 % 3  2) >>> mydate = Date(22, 11, 1976) >>> mydate.printUK() >>> mydate.addMonths(1) >>> mydate.printUK() >>> mydate.addMonths(3) >>> mydate.printUK() >>> mydate.addMonths(25) >>> mydate.printUK()

class Date: def __init__(self, day, month, year=2018): self.day = day self.mon = month self.year = year def printUS(self): print self.mon, "/", self.day, "/", self.year def printUK(self): print self.day, ".", self.mon, ".", str(self.year)[2:] def addMonths(self, n=1): new_mon = self.mon + n self.year += (new_mon-1) / 12 self.mon = (new_mon-1) % Solution #2

Challenge Problem 1.Add the function addDays(n) to the class Date. This function should add n days to the current date. Make sure to correctly handle transitions across months AND across years (when necessary). Take into account the different number of days in each month. 2.Revise the Date class such that it will again work with the month’s name (rather than its number), while preserving the functionality of the addMonths and addDays functions.