SlideShare a Scribd company logo
http://www.skillbrew.com
/Skillbrew
Talent brewed by the
industry itself
Classes and Objects
Pavan Verma
@YinYangPavan
Founder, P3 InfoTech Solutions Pvt. Ltd.
1
Python Programming Essentials
© SkillBrew http://skillbrew.com
Contents
 Defining a class
 Class attributes
 Class methods
 Class instances
 __init__ method
 self keyword
 Accessing attributes and methods
 Deleting attributes
 Types of attributes
 Inheritance
 Method overriding
 Calling parent functions
2
© SkillBrew http://skillbrew.com
Defining a class
A class is a special data type which defines how
to build a certain kind of object
class className():
# statements
Use the class keyword to define a class
3
© SkillBrew http://skillbrew.com
Defining a class
class Calculator():
counter = 0
def __init__(self):
pass
def add(self):
pass
class keyword to
define a class
A class definition creates a class object from which
class instances may be created
4
© SkillBrew http://skillbrew.com
Class Attributes
class Calculator():
counter = 0
def __init__(self):
pass
def add(self):
pass
class attributes are
just like variables
5
© SkillBrew http://skillbrew.com
Class Methods
class Calculator():
counter = 0
def __init__(self):
pass
def add(self):
pass
class methods are
functions invoked on an
instance of the class
6
© SkillBrew http://skillbrew.com
Class Instances
calc = Calculator()
• In order to you use it we create an instance of
class
• Instances are objects created that use the class
definition
Just call the class definition like a function to create
a class instance
7
© SkillBrew http://skillbrew.com
__init__ method
• __init__ method is like an initialization
constructor
• When a class defines an __init__ ()
method, class instantiation automatically invokes
__init__() method for the newly created
class instance
8
© SkillBrew http://skillbrew.com
__init__ method (2)
class Calculator():
counter = 0
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def add(self):
pass
calc = Calculator(10, 20)
print calc.x
print calc.y
Output:
10
20
9
© SkillBrew http://skillbrew.com
self keyword
• The first argument of every method is a reference
to the current instance of the class
• By convention, we name this argument self
• In __init__, self refers to the object currently
being created
• In other class methods, it refers to the instance
whose method was called
• Similar to the keyword this in Java or C++
10
© SkillBrew http://skillbrew.com
Accessing attributes and methods
Use the dot operator to access class attributes and
methods
calc = Calculator(10, 20)
print calc.x
print calc.y
print calc.counter
Output:
10
20
0
11
© SkillBrew http://skillbrew.com
Accessing attributes and methods (2)
class Calculator():
counter = 0
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def add(self):
return self.x + self.y
calc = Calculator(10, 20)
print calc.add()
• Although you must specify self
explicitly when defining the
method, you don’t include it
when calling the method
• Python passes it for you
automatically
12
© SkillBrew http://skillbrew.com
Deleting Instances
• When you are done with an object , you don’t have
to delete or free it explicitly
• Python has automatic garbage collection
• Python will automatically detect when all references
to a piece of memory have gone out of scope.
Automatically frees the memory.
• Garbage collection works well, hence fewer memory
leaks
• There’s also no “destructor” method for classes.
13
© SkillBrew http://skillbrew.com
Attributes
14
© SkillBrew http://skillbrew.com
Two kinds of Attributes
1. class attributes
2. data attributes
15
© SkillBrew http://skillbrew.com
Data attributes
class Calculator():
counter = 0
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def add(self):
return self.x + self.y
calc = Calculator(10, 20)
print calc.x # 10
print calc.y # 20
calc2 = Calculator(15, 35)
print calc2.x # 15
print calc2.y # 35
• Data attributes are
variables owned by a
particular instance
• Each instance has its own
value for data attributes
16
© SkillBrew http://skillbrew.com
Data attributes (2)
class Calculator():
counter = 0
def __init__(self, x=0, y=0):
self.x = x
self.y = y
calc = Calculator(10, 20)
calc.z = calc.x + calc.y
print calc.z
print calc.__dict__
Output:
30
{'y': 20, 'x': 10, 'z': 30}
17
• In Python classes you don’t
have a restriction of
declaring all data
attributes before hand,
you can create data
attributes at runtime
anywhere
• calc.z is an attribute
which is defined at
runtime outside the class
definition
© SkillBrew http://skillbrew.com
Class attributes
class Calculator():
counter = 0
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def add(self):
self.__class__.counter += 1
return self.x + self.y
calc = Calculator(10, 20)
print calc.add()
print calc.counter # 1
calc2 = Calculator(30, 40)
print calc2.add()
print calc2.counter # 2
• Access the class
attribute using
self.__class__.count
er
• Class attributes are
shared among all
instances
18
© SkillBrew http://skillbrew.com
Class attributes (2)
 Class attributes are defined within a class definition
and outside of any method
 Because all instances of a class share one copy of a
class attribute, when any instance changes it, the
value is changed for all instances
self.__class__.attribute_name
19
© SkillBrew http://skillbrew.com
Data attributes
 Variable owned by a
particular instance
 Each instance has its own
value for it
 These are the most
common kind of attribute
Class attributes
 Owned by the class as a
whole
 All class instances share the
same value for it
 Good for
• Class-wide constants
• Building counter of how
many instances of the
class have been made
Data attributes vs Class attributes
20
© SkillBrew http://skillbrew.com
Inheritance
21
© SkillBrew http://skillbrew.com
Inheritance
class Shape(object):
def name(self, shape):
print "Shape: %s" % shape
class Square(Shape):
def area(self, side):
return side**2
Shape is the
parent class
Square is the
child class inherits
Shape
class Parent(object):
pass
class Child(Parent):
pass
22
© SkillBrew http://skillbrew.com
Inheritance (2)
class Shape(object):
def name(self, shape):
print "Shape: %s" % shape
class Square(Shape):
def area(self, side):
return side**2
s = Square()
s.name("square")
print s.area(2)
Output:
Shape: square
4
Child class Square has access to
Parent classes methods and
attributes
23
© SkillBrew http://skillbrew.com
Method overriding
class Shape(object):
def name(self, shape):
print "Shape: %s" % shape
class Square(Shape):
def name(self, shape):
print "Child class Shape %s" % shape
def area(self, side):
return side**2
s = Square()
s.name("square")
print s.area(2)
Output:
Child class Shape square
4
24
© SkillBrew http://skillbrew.com
Calling the parent method
class Shape(object):
def name(self, shape):
print "Shape: %s" % shape
class Square(Shape):
def name(self, shape):
super(Square, self).name(shape)
print "Child class Shape %s" % shape
def area(self, side):
return side**2
s = Square()
s.name("square")
Use super keyword to call parent class method
super(ChildClass, self).method(args)
25
© SkillBrew http://skillbrew.com
Class & Static Methods
class Calculator(object):
counter = 0
def __init__(self, x=0, y=0):
...
def add(self):
...
@classmethod
def update_counter(cls):
cls.counter += 1
@staticmethod
def show_help():
print 'This calculator can
add'
26
© SkillBrew http://skillbrew.com
Resources
 http://www.diveintopython.net/object_o
riented_framework/defining_classes.html
 http://docs.python.org/2/tutorial/classes
.html
 http://docs.python.org/2/library/function
s.html#super
27

More Related Content

PPTX
Inheritance in Java
PPTX
Inheritance in java
PDF
Training Neural Networks
PPTX
Java awt (abstract window toolkit)
PDF
Python - object oriented
PPTX
Java applet
PPT
Java IO Package and Streams
Inheritance in Java
Inheritance in java
Training Neural Networks
Java awt (abstract window toolkit)
Python - object oriented
Java applet
Java IO Package and Streams

What's hot (20)

PDF
Python programming : Inheritance and polymorphism
PPTX
Linear regression in machine learning
PPTX
Type casting in java
PPTX
Java Inheritance
PPT
Textbox n label
PPTX
Java exception handling
PPTX
Machine Learning - Accuracy and Confusion Matrix
PPTX
Introduction to OOP(in java) BY Govind Singh
PPT
Java inheritance
PPTX
K-Folds Cross Validation Method
PPTX
PPSX
Data Types & Variables in JAVA
PPSX
ADABoost classifier
PDF
Linear regression
PPT
Lect 1-class and object
PPT
Method overriding
PPT
Fuzzy relations
PPTX
Association agggregation and composition
PDF
Python programming : Classes objects
PPTX
Presentation on supervised learning
Python programming : Inheritance and polymorphism
Linear regression in machine learning
Type casting in java
Java Inheritance
Textbox n label
Java exception handling
Machine Learning - Accuracy and Confusion Matrix
Introduction to OOP(in java) BY Govind Singh
Java inheritance
K-Folds Cross Validation Method
Data Types & Variables in JAVA
ADABoost classifier
Linear regression
Lect 1-class and object
Method overriding
Fuzzy relations
Association agggregation and composition
Python programming : Classes objects
Presentation on supervised learning
Ad

Viewers also liked (20)

PPT
Python Objects
PDF
Object Oriented Programming with Real World Examples
PPTX
Object oriented programming with python
ODP
Decorators in Python
PDF
Python Programming - VI. Classes and Objects
PPTX
Object oriented programming Fundamental Concepts
PPTX
Creating Objects in Python
PPTX
03 object-classes-pbl-4-slots
PPTX
Classes & object
PDF
PythonOOP
PDF
Metaclass Programming in Python
PPTX
Python Programming Essentials - M19 - Namespaces, Global Variables and Docstr...
PDF
Introduction To Programming with Python
PDF
Boost your django admin with Grappelli
PDF
Visualizing Relationships between Python objects - EuroPython 2008
PDF
HT16 - DA361A - OOP med Python
PDF
Python avancé : Classe et objet
PDF
Data Structure: Algorithm and analysis
PPTX
Python Programming Essentials - M8 - String Methods
PDF
CLTL python course: Object Oriented Programming (1/3)
Python Objects
Object Oriented Programming with Real World Examples
Object oriented programming with python
Decorators in Python
Python Programming - VI. Classes and Objects
Object oriented programming Fundamental Concepts
Creating Objects in Python
03 object-classes-pbl-4-slots
Classes & object
PythonOOP
Metaclass Programming in Python
Python Programming Essentials - M19 - Namespaces, Global Variables and Docstr...
Introduction To Programming with Python
Boost your django admin with Grappelli
Visualizing Relationships between Python objects - EuroPython 2008
HT16 - DA361A - OOP med Python
Python avancé : Classe et objet
Data Structure: Algorithm and analysis
Python Programming Essentials - M8 - String Methods
CLTL python course: Object Oriented Programming (1/3)
Ad

Similar to Python Programming Essentials - M20 - Classes and Objects (20)

PPTX
Unit – V Object Oriented Programming in Python.pptx
PPTX
python programming language unit 5 ppt.pptx
PPTX
05 Object Oriented Concept Presentation.pptx
PPT
Inheritance.ppt
PPTX
Python-oop
PPTX
Learning C++ - Class 4
PPT
PHP - Introduction to Object Oriented Programming with PHP
PDF
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
PPTX
Python advance
PDF
Advanced Python, Part 1
PDF
OOPS_Lab_Manual - programs using C++ programming language
PDF
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdf
PPTX
C++ Presen. tation.pptx
PDF
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdf
PPTX
2 Object-oriented programghgrtrdwwe.pptx
PDF
Intro to iOS Development • Made by Many
PPTX
Basic_concepts_of_OOPS_in_Python.pptx
PPT
Unit 1 Part - 3 constructor Overloading Static.ppt
PPTX
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Unit – V Object Oriented Programming in Python.pptx
python programming language unit 5 ppt.pptx
05 Object Oriented Concept Presentation.pptx
Inheritance.ppt
Python-oop
Learning C++ - Class 4
PHP - Introduction to Object Oriented Programming with PHP
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
Python advance
Advanced Python, Part 1
OOPS_Lab_Manual - programs using C++ programming language
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdf
C++ Presen. tation.pptx
Python Classes_ Empowering Developers, Enabling Breakthroughs.pdf
2 Object-oriented programghgrtrdwwe.pptx
Intro to iOS Development • Made by Many
Basic_concepts_of_OOPS_in_Python.pptx
Unit 1 Part - 3 constructor Overloading Static.ppt
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack

More from P3 InfoTech Solutions Pvt. Ltd. (20)

PPTX
Python Programming Essentials - M44 - Overview of Web Development
PPTX
Python Programming Essentials - M40 - Invoking External Programs
PPTX
Python Programming Essentials - M39 - Unit Testing
PPTX
Python Programming Essentials - M37 - Brief Overview of Misc Concepts
PPTX
Python Programming Essentials - M35 - Iterators & Generators
PPTX
Python Programming Essentials - M34 - List Comprehensions
PPTX
Python Programming Essentials - M31 - PEP 8
PPTX
Python Programming Essentials - M29 - Python Interpreter and Files
PPTX
Python Programming Essentials - M28 - Debugging with pdb
PPTX
Python Programming Essentials - M27 - Logging module
PPTX
Python Programming Essentials - M25 - os and sys modules
PPTX
Python Programming Essentials - M24 - math module
PPTX
Python Programming Essentials - M23 - datetime module
PPTX
Python Programming Essentials - M22 - File Operations
PPTX
Python Programming Essentials - M21 - Exception Handling
PPTX
Python Programming Essentials - M18 - Modules and Packages
PPTX
Python Programming Essentials - M17 - Functions
PPTX
Python Programming Essentials - M16 - Control Flow Statements and Loops
PPTX
Python Programming Essentials - M15 - References
PPTX
Python Programming Essentials - M14 - Dictionaries
Python Programming Essentials - M44 - Overview of Web Development
Python Programming Essentials - M40 - Invoking External Programs
Python Programming Essentials - M39 - Unit Testing
Python Programming Essentials - M37 - Brief Overview of Misc Concepts
Python Programming Essentials - M35 - Iterators & Generators
Python Programming Essentials - M34 - List Comprehensions
Python Programming Essentials - M31 - PEP 8
Python Programming Essentials - M29 - Python Interpreter and Files
Python Programming Essentials - M28 - Debugging with pdb
Python Programming Essentials - M27 - Logging module
Python Programming Essentials - M25 - os and sys modules
Python Programming Essentials - M24 - math module
Python Programming Essentials - M23 - datetime module
Python Programming Essentials - M22 - File Operations
Python Programming Essentials - M21 - Exception Handling
Python Programming Essentials - M18 - Modules and Packages
Python Programming Essentials - M17 - Functions
Python Programming Essentials - M16 - Control Flow Statements and Loops
Python Programming Essentials - M15 - References
Python Programming Essentials - M14 - Dictionaries

Python Programming Essentials - M20 - Classes and Objects

  • 1. http://www.skillbrew.com /Skillbrew Talent brewed by the industry itself Classes and Objects Pavan Verma @YinYangPavan Founder, P3 InfoTech Solutions Pvt. Ltd. 1 Python Programming Essentials
  • 2. © SkillBrew http://skillbrew.com Contents  Defining a class  Class attributes  Class methods  Class instances  __init__ method  self keyword  Accessing attributes and methods  Deleting attributes  Types of attributes  Inheritance  Method overriding  Calling parent functions 2
  • 3. © SkillBrew http://skillbrew.com Defining a class A class is a special data type which defines how to build a certain kind of object class className(): # statements Use the class keyword to define a class 3
  • 4. © SkillBrew http://skillbrew.com Defining a class class Calculator(): counter = 0 def __init__(self): pass def add(self): pass class keyword to define a class A class definition creates a class object from which class instances may be created 4
  • 5. © SkillBrew http://skillbrew.com Class Attributes class Calculator(): counter = 0 def __init__(self): pass def add(self): pass class attributes are just like variables 5
  • 6. © SkillBrew http://skillbrew.com Class Methods class Calculator(): counter = 0 def __init__(self): pass def add(self): pass class methods are functions invoked on an instance of the class 6
  • 7. © SkillBrew http://skillbrew.com Class Instances calc = Calculator() • In order to you use it we create an instance of class • Instances are objects created that use the class definition Just call the class definition like a function to create a class instance 7
  • 8. © SkillBrew http://skillbrew.com __init__ method • __init__ method is like an initialization constructor • When a class defines an __init__ () method, class instantiation automatically invokes __init__() method for the newly created class instance 8
  • 9. © SkillBrew http://skillbrew.com __init__ method (2) class Calculator(): counter = 0 def __init__(self, x=0, y=0): self.x = x self.y = y def add(self): pass calc = Calculator(10, 20) print calc.x print calc.y Output: 10 20 9
  • 10. © SkillBrew http://skillbrew.com self keyword • The first argument of every method is a reference to the current instance of the class • By convention, we name this argument self • In __init__, self refers to the object currently being created • In other class methods, it refers to the instance whose method was called • Similar to the keyword this in Java or C++ 10
  • 11. © SkillBrew http://skillbrew.com Accessing attributes and methods Use the dot operator to access class attributes and methods calc = Calculator(10, 20) print calc.x print calc.y print calc.counter Output: 10 20 0 11
  • 12. © SkillBrew http://skillbrew.com Accessing attributes and methods (2) class Calculator(): counter = 0 def __init__(self, x=0, y=0): self.x = x self.y = y def add(self): return self.x + self.y calc = Calculator(10, 20) print calc.add() • Although you must specify self explicitly when defining the method, you don’t include it when calling the method • Python passes it for you automatically 12
  • 13. © SkillBrew http://skillbrew.com Deleting Instances • When you are done with an object , you don’t have to delete or free it explicitly • Python has automatic garbage collection • Python will automatically detect when all references to a piece of memory have gone out of scope. Automatically frees the memory. • Garbage collection works well, hence fewer memory leaks • There’s also no “destructor” method for classes. 13
  • 15. © SkillBrew http://skillbrew.com Two kinds of Attributes 1. class attributes 2. data attributes 15
  • 16. © SkillBrew http://skillbrew.com Data attributes class Calculator(): counter = 0 def __init__(self, x=0, y=0): self.x = x self.y = y def add(self): return self.x + self.y calc = Calculator(10, 20) print calc.x # 10 print calc.y # 20 calc2 = Calculator(15, 35) print calc2.x # 15 print calc2.y # 35 • Data attributes are variables owned by a particular instance • Each instance has its own value for data attributes 16
  • 17. © SkillBrew http://skillbrew.com Data attributes (2) class Calculator(): counter = 0 def __init__(self, x=0, y=0): self.x = x self.y = y calc = Calculator(10, 20) calc.z = calc.x + calc.y print calc.z print calc.__dict__ Output: 30 {'y': 20, 'x': 10, 'z': 30} 17 • In Python classes you don’t have a restriction of declaring all data attributes before hand, you can create data attributes at runtime anywhere • calc.z is an attribute which is defined at runtime outside the class definition
  • 18. © SkillBrew http://skillbrew.com Class attributes class Calculator(): counter = 0 def __init__(self, x=0, y=0): self.x = x self.y = y def add(self): self.__class__.counter += 1 return self.x + self.y calc = Calculator(10, 20) print calc.add() print calc.counter # 1 calc2 = Calculator(30, 40) print calc2.add() print calc2.counter # 2 • Access the class attribute using self.__class__.count er • Class attributes are shared among all instances 18
  • 19. © SkillBrew http://skillbrew.com Class attributes (2)  Class attributes are defined within a class definition and outside of any method  Because all instances of a class share one copy of a class attribute, when any instance changes it, the value is changed for all instances self.__class__.attribute_name 19
  • 20. © SkillBrew http://skillbrew.com Data attributes  Variable owned by a particular instance  Each instance has its own value for it  These are the most common kind of attribute Class attributes  Owned by the class as a whole  All class instances share the same value for it  Good for • Class-wide constants • Building counter of how many instances of the class have been made Data attributes vs Class attributes 20
  • 22. © SkillBrew http://skillbrew.com Inheritance class Shape(object): def name(self, shape): print "Shape: %s" % shape class Square(Shape): def area(self, side): return side**2 Shape is the parent class Square is the child class inherits Shape class Parent(object): pass class Child(Parent): pass 22
  • 23. © SkillBrew http://skillbrew.com Inheritance (2) class Shape(object): def name(self, shape): print "Shape: %s" % shape class Square(Shape): def area(self, side): return side**2 s = Square() s.name("square") print s.area(2) Output: Shape: square 4 Child class Square has access to Parent classes methods and attributes 23
  • 24. © SkillBrew http://skillbrew.com Method overriding class Shape(object): def name(self, shape): print "Shape: %s" % shape class Square(Shape): def name(self, shape): print "Child class Shape %s" % shape def area(self, side): return side**2 s = Square() s.name("square") print s.area(2) Output: Child class Shape square 4 24
  • 25. © SkillBrew http://skillbrew.com Calling the parent method class Shape(object): def name(self, shape): print "Shape: %s" % shape class Square(Shape): def name(self, shape): super(Square, self).name(shape) print "Child class Shape %s" % shape def area(self, side): return side**2 s = Square() s.name("square") Use super keyword to call parent class method super(ChildClass, self).method(args) 25
  • 26. © SkillBrew http://skillbrew.com Class & Static Methods class Calculator(object): counter = 0 def __init__(self, x=0, y=0): ... def add(self): ... @classmethod def update_counter(cls): cls.counter += 1 @staticmethod def show_help(): print 'This calculator can add' 26
  • 27. © SkillBrew http://skillbrew.com Resources  http://www.diveintopython.net/object_o riented_framework/defining_classes.html  http://docs.python.org/2/tutorial/classes .html  http://docs.python.org/2/library/function s.html#super 27