Python Note4 (OOP)

Labels: Python, Class,Object

Ref:
Python Classes/Objects https://www.tutorialspoint.com/python/python_classes_objects.htm


Classes

  • Creating Class
    The name of the class immediately follows the keyword class followed by a colon as follow:
class ClassName:
   'Optional class documentation string'
   class_components

Example

class Employee:
   'Common base class for all employees'
   empCount = 0
   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary

__attribute: Private attribute ('__'). Not be visible outside the class definition.

  • Creating instance objects
# This would create first object of Employee class
emp1 = Employee("Zara", 2000)
  • Accessing attributes and functions
emp1.displayEmployee()
print "Total Employee %d" % Employee1.empCount

object._className__attrName.: Access the private (hided) attributes.

  • Attributes accessing functions
Function Description
getattr(obj, name[, default]) access the attribute of object.
hasattr(obj,name) check if an attribute exists or not.
setattr(obj,name,value) set an attribute. If attribute does not exist, then it would be created.
delattr(obj, name) delete an attribute.

Examples:

hasattr(emp1, 'age')    # Returns true if 'age' attribute exists
getattr(emp1, 'age')    # Returns value of 'age' attribute
setattr(emp1, 'age', 8) # Set attribute 'age' at 8
delattr(empl, 'age')    # Delete attribute 'age'
  • Class Built-in Attributes
    It can be accessed using dot operator.
Attribute Description
__dict__ Dictionary containing the class's namespace.
__doc__ Class documentation string or none, if undefined.
__name__ Class name.
__module__ Module name in which the class is defined. This attribute is __main__ in interactive mode.
__bases__ A possibly empty tuple containing the base classes, in the order of their occurrence in the base class list.

Example:

class Employee:
  'Common base class for all employees'
  empCount = 0
  def displayEmployee(self):
     print "Name : ", self.name,  ", Salary: ", self.salary
print "Employee.__doc__:", Employee.__doc__
print "Employee.__name__:", Employee.__name__
print "Employee.__module__:", Employee.__module__
print "Employee.__bases__:", Employee.__bases__
print "Employee.__dict__:", Employee.__dict__

Result:

Employee.__doc__: Common base class for all employees
Employee.__name__: Employee
Employee.__module__: __main__
Employee.__bases__: ()
Employee.__dict__: {'__module__': '__main__',  'empCount': 2, 
'displayEmployee': , 
'__doc__': 'Common base class for all employees'}
  • Class Inheritance
    The child class inherits the attributes of its parent class.
    A child class can also override data members and methods from the parent.
class SubClassName (ParentClass1[, ParentClass2, ...]):
   'Optional class documentation string'
   class_suite

A class from multiple parent classes.

class A:        # define your class A
.....
class B:         # define your class B
.....
class C(A, B):   # subclass of A and B
.....

Check a relationships of two classes and instances:

  • issubclass(sub, sup) returns true if the given subclass sub is indeed a subclass of the superclass sup.

  • isinstance(obj, Class) returns true if obj is an instance of class Class or is an instance of a subclass of Class

  • Methods Overloading

  • Base Overloading Methods

Method Description Sample Call
__init__(self [,args...]) Constructor (with any optional arguments) obj = className(args)
__del__( self ) Destructor, deletes an object del obj
__repr__( self ) Evaluatable string representation repr(obj)
__str__( self ) Printable string representation str(obj)
__cmp__ ( self, x ) Object comparison cmp(obj, x)

你可能感兴趣的:(Python Note4 (OOP))