Date:30/01/2015 pinjut@gmail.com sanooja jabbar t.com/baabtra twitter.com/baabtra in.linkedin.com/in/baabtra OOPs in
Object Oriented Programming ❖ Python is an object-oriented programming language. ❖ Python doesn't force to use the object-oriented paradigm exclusively. ❖ Python also supports procedural programming with modules and functions, so you can select the most suitable programming paradigm for each part of your program. “Generally, the object-oriented paradigm is suitable when you want to group state (data) and behavior (code) together in handy packets of functionality.”
objects a software item that contains variables and methods
❖ Objects are the basic run-time entities in an object-oriented system. ❖ They may represent a person, a place, a bank account, a table of data or any item that the program must handle. ❖ When a program is executed the objects interact by sending messages to one another. ❖ Objects have two components: Data (i.e., attributes) Behaviors (i.e., methods)
classes binds the member variables and methods into a single unit
Syntax: class classname: statement(s) Example: class myClass: def hello(self): print "Hello" def sum(self): int_res=100+200 return int_res
Creating Instance Objects Syntax anInstance=class_name() Example classObj=myClass()
Accessing Attributes Example: classObj.hello() int_sum=classObj.sum() print “The sum is : ”,int_sum output: Hello The sum is : 300
Object Oriented Design focuses on ➔ Encapsulation: dividing the code into a public interface, and a private implementation of that interface ➔ Polymorphism: the ability to overload standard operators so that they have appropriate behavior based on their context ➔ Inheritance: the ability to create subclasses that contain specializations of their parents
inheritance child class acquires the properties of the parent class
➔ Simple Inheritance Syntax derived_class(base_class) ➔ Multiple Inheritance Syntax derived_class(base_class[,base_class1][,base_class2 ][....])
Example for Simple Inheritance: class myClass: def sum(self): int_res=100+200 return int_res class newClass(myClass): def hello(self): print "Maya" classObj=newClass() classObj.hello() int_sum=classObj.sum() print “The sum is : ”,int_sum output: Maya The sum is : 300
Example for Multiple inheritance class A: def displayA(self): print "Class A" class B: def displayB(self): print "Class B" class c(A,B): def displayC(self): print "Class C" objC=c() objC.displayA() objC.displayB() objC.displayC() Output: Class A Class B Class C
polymorphis m process of using an operator
❖ Uses polymorphism extensively in built-in types. ❖ Here we use the same indexing operator for three different data types. ❖ Polymorphism is most commonly used when dealing with inheritance. ❖ Example: a = "alfa" # string b = (1, 2, 3, 4) # tuple c = ['o', 'm', 'e', 'g', 'a'] # list print a[2] print b[1] print c[3] Output: f 2 g
Two kinds of Polymorphism: ❖ Overloading - Two or more methods with different signatures - Python operators works for built-in Classes ❖ Overriding - Replacing an inherited method with another having the same signature
Operator Expression Internally Addition p1+p2 p1.__add__(p2) Subtraction p1-p2 p1.__sub__(p2) Multiplication p1*p2 p1.__mul__(p2) Power p1**p2 p1.__pow__(p2) Division p1/p2 p1.__truediv__(p2) Explanation for Operator Overloading Sample Program What actually happens is that, when you do p1 - p2, Python will call p1.__sub__(p2). Similarly, we can overload other operators as well. The special function that we need to implement is tabulated below
Example for Overriding class Animal: def __init__(self, name=''): self.name = name def talk(self): pass class Cat(Animal): def talk(self): print "Meow!" class Dog(Animal): def talk(self): print "Woof!" a = Animal() a.talk() c = Cat("Missy") c.talk() d = Dog("Rocky") d.talk() Output: Meow! Woof!
encapsulatio n process of binding data members and member functions into a single unit
❖ An important concept in OOP ❖ Data Abstraction is achieved through Encapsulation ❖ Generally speaking encapsulation is the mechanism for restricting the access to some of an object's components, this means, that the internal representation of an object can't be seen from outside of the objects definition.
Name Notation Behaviour name Public can be accessed from inside and outside _name Protected Like a public member, but they shouldn’t be directly accessed from outside __name Private Can’t be seen and accessed from outside The following table shows the different behaviour of Public, Protected and Private Data
Example for Public, Private and Protected Data >>> class Encapsulation(): def __init__(self,a,b,c): self.public=a self._protected=b self.__private=c >>> x=Encapsulation(11,13,17) >>> x.public 11 >>> x._protected 13 >>> x._protected=23 >>> x._protected 23 >>> x.__private Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> x.private AttributeError: 'Encapsulation' object has no attribute '__private' >>>
special methods classes in python can implement certain operations with special method names.
❖ They are also called “Magic Methods” ❖ They are not called directly, but by a specific language syntax ❖ This is similar to what is known as operator overloading in C++ ❖ Contains clumsy syntax, ie., double underscore at the beginning and end ❖ So simplicity __init__() can be read as “dunder init dunder” ❖ So magic methods also called “Dunder Methods”
Some special methods are: 1) __init__() default constructor, when an instance of class is created 2) __str__() If we print an object then its __str__() method will get called 3) __len__() Returns the length of the container 4) __del__() It destructs the constructors that have created using __init__()
Example for Special Methods class Book: def __init__(self, title, author, pages): print "A book is created" self.title = title self.author = author self.pages = pages def __str__(self): return "Title:%s , author:%s, pages:%s " % (self.title, self.author, self.pages) def __len__(self): return self.pages def __del__(self): print "A book is destroyed" book = Book("Inside Steve's Brain", "Leander Kahney", 304) print book print len(book) del book Output: A book is created Title:Inside Steve's Brain , author:Leander Kahney, pages:304 304 A book is destroyed
class Book: def __init__(self, title, author, pages): print "A book is created" self.title = title self.author = author self.pages = pages def __str__(self): return "Title:%s , author:%s, pages:%s " % (self.title, self.author, self.pages) def __len__(self): return self.pages def __del__(self): print "A book is destroyed" book = Book("Inside Steve's Brain", "Leander Kahney", 304) print book print len(book) del book Output: A book is created Here we call the __init__() method. The method creates a new instance of a Book class.
class Book: def __init__(self, title, author, pages): print "A book is created" self.title = title self.author = author self.pages = pages def __str__(self): return "Title:%s , author:%s, pages:%s " % (self.title, self.author, self.pages) def __len__(self): return self.pages def __del__(self): print "A book is destroyed" book = Book("Inside Steve's Brain", "Leander Kahney", 304) print book print len(book) del book Output: A book is created Title:Inside Steve's Brain , author:Leander Kahney, pages:304 The print keyword calls the __str__() method. This method should return an informal string representation of an object.
class Book: def __init__(self, title, author, pages): print "A book is created" self.title = title self.author = author self.pages = pages def __str__(self): return "Title:%s , author:%s, pages:%s " % (self.title, self.author, self.pages) def __len__(self): return self.pages def __del__(self): print "A book is destroyed" book = Book("Inside Steve's Brain", "Leander Kahney", 304) print book print len(book) del book Output: A book is created Title:Inside Steve's Brain , author:Leander Kahney, pages:304 304 The len() function invokes the __len__() method. In our case, we print the number of pages of your book.
class Book: def __init__(self, title, author, pages): print "A book is created" self.title = title self.author = author self.pages = pages def __str__(self): return "Title:%s , author:%s, pages:%s " % (self.title, self.author, self.pages) def __len__(self): return self.pages def __del__(self): print "A book is destroyed" book = Book("Inside Steve's Brain", "Leander Kahney", 304) print book print len(book) del book Output: A book is created Title:Inside Steve's Brain , author:Leander Kahney, pages:304 304 A book is destroyed The del keyword deletes an object. It calls the __del__() method.
modules using import statement
❖ A typical Python program is made up of several source files. Each source file corresponds to a module, which packages program code and data for reuse. ❖ Modules are normally independent of each other so that other programs can reuse the specific modules they need. ❖ A module explicitly establishes dependencies upon another module by using import statements.
Import Statement Syntax import modname [as varname][,...] Example import MyModule1 import MyModule as Alias
Import Statement Syntax import modname [as varname][,...] Example import MyModule1 import MyModule as Alias In the simplest and most common case, modname is an identifier, the name of a variable that Python binds to the module object when the import statement finishes
Import Statement Syntax import modname [as varname][,...] Example import MyModule1 import MyModule as Alias looks for the module named MyModule and binds the variable named Alias in the current scope to the module object. varname is always a simple identifier.
Relative Import Statement Suppose we are here and we want to import the file employeeDetails.py which resides in a directory as shown
Relative Import Statement import sys import os str_current_path = os.getcwd() ## get current working directory str_module_path = str_current_path.replace( ' Accounts',‘HR/employees / ') sys.path.append( str_module_path ) import employeeDetails
➔ sys.path A list of strings that specifies the search path for modules ➔ sys.path.append( module path ) This statement append our module path with the existing list of sys.path, then the import statement search for the module in the module path as we specified. Relative Import Statement
❖ When the Python interpreter reads a source file, it executes all of the code found in it. But Before executing the code, it will define a few special variables. ❖ For example, if the python interpreter is running a module (the source file) as the main program, it sets the special __name__ variable to have a value"__main__". ❖ If this file is being imported from another module, __name__ will be set to the module's name. __main__()
def func(): print("func() in one.py") print("top-level in one.py") if __name__ == "__main__": print("one.py is being run directly") else: print("one.py is being imported into another module") # File one.py # File two.py import one print("top-level in two.py") one.func() if __name__ == "__main__": print("two.py is being run directly") else: print("two.py is being imported into another module") Example
def func(): print("func() in one.py") print("top-level in one.py") if __name__ == "__main__": print("one.py is being run directly") else: print("one.py is being imported into another module") # File one.py # File two.py import one print("top-level in two.py") one.func() if __name__ == "__main__": print("two.py is being run directly") else: print("two.py is being imported into another module") Example When we run one.py --------------------------- Top-level in one.py One.py is being run directly
def func(): print("func() in one.py") print("top-level in one.py") if __name__ == "__main__": print("one.py is being run directly") else: print("one.py is being imported into another module") # File one.py # File two.py import one print("top-level in two.py") one.func() if __name__ == "__main__": print("two.py is being run directly") else: print("two.py is being imported into another module") Example When we run two.py ----------------------------- top-level in one.py one.py is being imported into another module top-level in two.py func() in one.py two.py is being run directly
US UK UAE 7002 Hana Road, Edison NJ 08817, United States of America. 90 High Street, Cherry Hinton, Cambridge, CB1 9HZ, United Kingdom. Suite No: 51, Oasis Center, Sheikh Zayed Road, Dubai, UAE Email to info@baabtra.com or Visit baabtra.com Looking for learning more about the above topic?
India Centres Emarald Mall (Big Bazar Building) Mavoor Road, Kozhikode, Kerala, India. Ph: + 91 – 495 40 25 550 NC Complex, Near Bus Stand Mukkam, Kozhikode, Kerala, India. Ph: + 91 – 495 40 25 550 Cafit Square IT Park, Hilite Business Park, Kozhikode Kerala, India. Email: info@baabtra.com TBI - NITC NIT Campus, Kozhikode. Kerala, India. Start up Village Eranakulam, Kerala, India. Start up Village UL CC Kozhikode, Kerala
Follow us @ twitter.com/baabtra Like us @ facebook.com/baabtra Subscribe to us @ youtube.com/baabtra Become a follower @ slideshare.net/BaabtraMentoringPartner Connect to us @ in.linkedin.com/in/baabtra Give a feedback @ massbaab.com/baabtra Thanks in advance www.baabtra.com | www.massbaab.com |www.baabte.com
Want to learn more about programming or Looking to become a good programmer? Are you wasting time on searching so many contents online? Do you want to learn things quickly? Tired of spending huge amount of money to become a Software professional? Do an online course @ baabtra.com We put industry standards to practice. Our structured, activity based courses are so designed to make a quick, good software professional out of anybody who holds a passion for coding.

Oop concepts in python

  • 2.
  • 3.
    Object Oriented Programming ❖Python is an object-oriented programming language. ❖ Python doesn't force to use the object-oriented paradigm exclusively. ❖ Python also supports procedural programming with modules and functions, so you can select the most suitable programming paradigm for each part of your program. “Generally, the object-oriented paradigm is suitable when you want to group state (data) and behavior (code) together in handy packets of functionality.”
  • 4.
    objects a software itemthat contains variables and methods
  • 5.
    ❖ Objects arethe basic run-time entities in an object-oriented system. ❖ They may represent a person, a place, a bank account, a table of data or any item that the program must handle. ❖ When a program is executed the objects interact by sending messages to one another. ❖ Objects have two components: Data (i.e., attributes) Behaviors (i.e., methods)
  • 6.
    classes binds the membervariables and methods into a single unit
  • 7.
    Syntax: class classname: statement(s) Example: class myClass: defhello(self): print "Hello" def sum(self): int_res=100+200 return int_res
  • 8.
  • 9.
  • 10.
    Object Oriented Designfocuses on ➔ Encapsulation: dividing the code into a public interface, and a private implementation of that interface ➔ Polymorphism: the ability to overload standard operators so that they have appropriate behavior based on their context ➔ Inheritance: the ability to create subclasses that contain specializations of their parents
  • 11.
    inheritance child class acquiresthe properties of the parent class
  • 12.
    ➔ Simple Inheritance Syntax derived_class(base_class) ➔Multiple Inheritance Syntax derived_class(base_class[,base_class1][,base_class2 ][....])
  • 13.
    Example for SimpleInheritance: class myClass: def sum(self): int_res=100+200 return int_res class newClass(myClass): def hello(self): print "Maya" classObj=newClass() classObj.hello() int_sum=classObj.sum() print “The sum is : ”,int_sum output: Maya The sum is : 300
  • 14.
    Example for Multipleinheritance class A: def displayA(self): print "Class A" class B: def displayB(self): print "Class B" class c(A,B): def displayC(self): print "Class C" objC=c() objC.displayA() objC.displayB() objC.displayC() Output: Class A Class B Class C
  • 15.
  • 16.
    ❖ Uses polymorphismextensively in built-in types. ❖ Here we use the same indexing operator for three different data types. ❖ Polymorphism is most commonly used when dealing with inheritance. ❖ Example: a = "alfa" # string b = (1, 2, 3, 4) # tuple c = ['o', 'm', 'e', 'g', 'a'] # list print a[2] print b[1] print c[3] Output: f 2 g
  • 17.
    Two kinds ofPolymorphism: ❖ Overloading - Two or more methods with different signatures - Python operators works for built-in Classes ❖ Overriding - Replacing an inherited method with another having the same signature
  • 18.
    Operator Expression Internally Additionp1+p2 p1.__add__(p2) Subtraction p1-p2 p1.__sub__(p2) Multiplication p1*p2 p1.__mul__(p2) Power p1**p2 p1.__pow__(p2) Division p1/p2 p1.__truediv__(p2) Explanation for Operator Overloading Sample Program What actually happens is that, when you do p1 - p2, Python will call p1.__sub__(p2). Similarly, we can overload other operators as well. The special function that we need to implement is tabulated below
  • 19.
    Example for Overriding classAnimal: def __init__(self, name=''): self.name = name def talk(self): pass class Cat(Animal): def talk(self): print "Meow!" class Dog(Animal): def talk(self): print "Woof!" a = Animal() a.talk() c = Cat("Missy") c.talk() d = Dog("Rocky") d.talk() Output: Meow! Woof!
  • 20.
    encapsulatio n process of bindingdata members and member functions into a single unit
  • 21.
    ❖ An importantconcept in OOP ❖ Data Abstraction is achieved through Encapsulation ❖ Generally speaking encapsulation is the mechanism for restricting the access to some of an object's components, this means, that the internal representation of an object can't be seen from outside of the objects definition.
  • 22.
    Name Notation Behaviour namePublic can be accessed from inside and outside _name Protected Like a public member, but they shouldn’t be directly accessed from outside __name Private Can’t be seen and accessed from outside The following table shows the different behaviour of Public, Protected and Private Data
  • 23.
    Example for Public,Private and Protected Data >>> class Encapsulation(): def __init__(self,a,b,c): self.public=a self._protected=b self.__private=c >>> x=Encapsulation(11,13,17) >>> x.public 11 >>> x._protected 13 >>> x._protected=23 >>> x._protected 23 >>> x.__private Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> x.private AttributeError: 'Encapsulation' object has no attribute '__private' >>>
  • 24.
    special methods classes in pythoncan implement certain operations with special method names.
  • 25.
    ❖ They arealso called “Magic Methods” ❖ They are not called directly, but by a specific language syntax ❖ This is similar to what is known as operator overloading in C++ ❖ Contains clumsy syntax, ie., double underscore at the beginning and end ❖ So simplicity __init__() can be read as “dunder init dunder” ❖ So magic methods also called “Dunder Methods”
  • 26.
    Some special methodsare: 1) __init__() default constructor, when an instance of class is created 2) __str__() If we print an object then its __str__() method will get called 3) __len__() Returns the length of the container 4) __del__() It destructs the constructors that have created using __init__()
  • 27.
    Example for SpecialMethods class Book: def __init__(self, title, author, pages): print "A book is created" self.title = title self.author = author self.pages = pages def __str__(self): return "Title:%s , author:%s, pages:%s " % (self.title, self.author, self.pages) def __len__(self): return self.pages def __del__(self): print "A book is destroyed" book = Book("Inside Steve's Brain", "Leander Kahney", 304) print book print len(book) del book Output: A book is created Title:Inside Steve's Brain , author:Leander Kahney, pages:304 304 A book is destroyed
  • 28.
    class Book: def __init__(self,title, author, pages): print "A book is created" self.title = title self.author = author self.pages = pages def __str__(self): return "Title:%s , author:%s, pages:%s " % (self.title, self.author, self.pages) def __len__(self): return self.pages def __del__(self): print "A book is destroyed" book = Book("Inside Steve's Brain", "Leander Kahney", 304) print book print len(book) del book Output: A book is created Here we call the __init__() method. The method creates a new instance of a Book class.
  • 29.
    class Book: def __init__(self,title, author, pages): print "A book is created" self.title = title self.author = author self.pages = pages def __str__(self): return "Title:%s , author:%s, pages:%s " % (self.title, self.author, self.pages) def __len__(self): return self.pages def __del__(self): print "A book is destroyed" book = Book("Inside Steve's Brain", "Leander Kahney", 304) print book print len(book) del book Output: A book is created Title:Inside Steve's Brain , author:Leander Kahney, pages:304 The print keyword calls the __str__() method. This method should return an informal string representation of an object.
  • 30.
    class Book: def __init__(self,title, author, pages): print "A book is created" self.title = title self.author = author self.pages = pages def __str__(self): return "Title:%s , author:%s, pages:%s " % (self.title, self.author, self.pages) def __len__(self): return self.pages def __del__(self): print "A book is destroyed" book = Book("Inside Steve's Brain", "Leander Kahney", 304) print book print len(book) del book Output: A book is created Title:Inside Steve's Brain , author:Leander Kahney, pages:304 304 The len() function invokes the __len__() method. In our case, we print the number of pages of your book.
  • 31.
    class Book: def __init__(self,title, author, pages): print "A book is created" self.title = title self.author = author self.pages = pages def __str__(self): return "Title:%s , author:%s, pages:%s " % (self.title, self.author, self.pages) def __len__(self): return self.pages def __del__(self): print "A book is destroyed" book = Book("Inside Steve's Brain", "Leander Kahney", 304) print book print len(book) del book Output: A book is created Title:Inside Steve's Brain , author:Leander Kahney, pages:304 304 A book is destroyed The del keyword deletes an object. It calls the __del__() method.
  • 32.
  • 33.
    ❖ A typicalPython program is made up of several source files. Each source file corresponds to a module, which packages program code and data for reuse. ❖ Modules are normally independent of each other so that other programs can reuse the specific modules they need. ❖ A module explicitly establishes dependencies upon another module by using import statements.
  • 34.
    Import Statement Syntax import modname[as varname][,...] Example import MyModule1 import MyModule as Alias
  • 35.
    Import Statement Syntax import modname[as varname][,...] Example import MyModule1 import MyModule as Alias In the simplest and most common case, modname is an identifier, the name of a variable that Python binds to the module object when the import statement finishes
  • 36.
    Import Statement Syntax import modname[as varname][,...] Example import MyModule1 import MyModule as Alias looks for the module named MyModule and binds the variable named Alias in the current scope to the module object. varname is always a simple identifier.
  • 37.
    Relative Import Statement Supposewe are here and we want to import the file employeeDetails.py which resides in a directory as shown
  • 38.
    Relative Import Statement importsys import os str_current_path = os.getcwd() ## get current working directory str_module_path = str_current_path.replace( ' Accounts',‘HR/employees / ') sys.path.append( str_module_path ) import employeeDetails
  • 39.
    ➔ sys.path A listof strings that specifies the search path for modules ➔ sys.path.append( module path ) This statement append our module path with the existing list of sys.path, then the import statement search for the module in the module path as we specified. Relative Import Statement
  • 40.
    ❖ When thePython interpreter reads a source file, it executes all of the code found in it. But Before executing the code, it will define a few special variables. ❖ For example, if the python interpreter is running a module (the source file) as the main program, it sets the special __name__ variable to have a value"__main__". ❖ If this file is being imported from another module, __name__ will be set to the module's name. __main__()
  • 41.
    def func(): print("func() inone.py") print("top-level in one.py") if __name__ == "__main__": print("one.py is being run directly") else: print("one.py is being imported into another module") # File one.py # File two.py import one print("top-level in two.py") one.func() if __name__ == "__main__": print("two.py is being run directly") else: print("two.py is being imported into another module") Example
  • 42.
    def func(): print("func() inone.py") print("top-level in one.py") if __name__ == "__main__": print("one.py is being run directly") else: print("one.py is being imported into another module") # File one.py # File two.py import one print("top-level in two.py") one.func() if __name__ == "__main__": print("two.py is being run directly") else: print("two.py is being imported into another module") Example When we run one.py --------------------------- Top-level in one.py One.py is being run directly
  • 43.
    def func(): print("func() inone.py") print("top-level in one.py") if __name__ == "__main__": print("one.py is being run directly") else: print("one.py is being imported into another module") # File one.py # File two.py import one print("top-level in two.py") one.func() if __name__ == "__main__": print("two.py is being run directly") else: print("two.py is being imported into another module") Example When we run two.py ----------------------------- top-level in one.py one.py is being imported into another module top-level in two.py func() in one.py two.py is being run directly
  • 44.
    US UK UAE 7002Hana Road, Edison NJ 08817, United States of America. 90 High Street, Cherry Hinton, Cambridge, CB1 9HZ, United Kingdom. Suite No: 51, Oasis Center, Sheikh Zayed Road, Dubai, UAE Email to info@baabtra.com or Visit baabtra.com Looking for learning more about the above topic?
  • 45.
    India Centres Emarald Mall(Big Bazar Building) Mavoor Road, Kozhikode, Kerala, India. Ph: + 91 – 495 40 25 550 NC Complex, Near Bus Stand Mukkam, Kozhikode, Kerala, India. Ph: + 91 – 495 40 25 550 Cafit Square IT Park, Hilite Business Park, Kozhikode Kerala, India. Email: info@baabtra.com TBI - NITC NIT Campus, Kozhikode. Kerala, India. Start up Village Eranakulam, Kerala, India. Start up Village UL CC Kozhikode, Kerala
  • 46.
    Follow us @twitter.com/baabtra Like us @ facebook.com/baabtra Subscribe to us @ youtube.com/baabtra Become a follower @ slideshare.net/BaabtraMentoringPartner Connect to us @ in.linkedin.com/in/baabtra Give a feedback @ massbaab.com/baabtra Thanks in advance www.baabtra.com | www.massbaab.com |www.baabte.com
  • 47.
    Want to learnmore about programming or Looking to become a good programmer? Are you wasting time on searching so many contents online? Do you want to learn things quickly? Tired of spending huge amount of money to become a Software professional? Do an online course @ baabtra.com We put industry standards to practice. Our structured, activity based courses are so designed to make a quick, good software professional out of anybody who holds a passion for coding.