Advertisement
Advertisement

More Related Content

Advertisement

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

Advertisement

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
  14. © SkillBrew http://skillbrew.com Attributes 14
  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
  21. © SkillBrew http://skillbrew.com Inheritance 21
  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
Advertisement