Python Object Oriented
1. Creating class
class className: 'Optional class documentation string' class_suite
The class has a documentation string, which can be accessed via ClassName.__doc__.
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 #class constructor or initialization method #It's used to make a new class instance #the first argument to each method is self #When we use this method, we do not need to add it. Python will adds the self argument to the list for you. def displayCount(self): print("Total Employee %d" % Employee.empCount) def displayEmployee(self): print("Name : ", self.name, ", Salary: ", self.salary) #create an instance e = Employee('Ben', 1000)
2. access an attribute
just like C++
#We can add, remove, or modify attributes of classes and objects at any time. emp1.age = 7 # Add an 'age' attribute. emp1.age = 8 # Modify 'age' attribute. del emp1.age # Delete 'age' attribute.
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'
3. Built-in class attribute
ictionary containing the class's namespace. __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.
4. destroy
#Python deletes unneeded objects (built-in types or class instances) automatically to free the memory space. ''' An object's reference count increases when it is assigned a new name or placed in a container (list, tuple, or dictionary). The object's reference count decreases when it's deleted with del, its reference is reassigned, or its reference goes out of scope. When an object's reference count reaches zero, Python collects it automatically. ''' class Point: def __init( self, x=0, y=0): self.x = x self.y = y def __del__(self): class_name = self.__class__.__name__ print class_name, "destroyed" pt1 = Point() pt2 = pt1 pt3 = pt1 print id(pt1), id(pt2), id(pt3) # prints the ids of the obejcts del pt1 del pt2 del pt3 #result 3083401324 3083401324 3083401324 Point destroyed
5. inheritance
class SubClassName (ParentClass1[, ParentClass2, ...]): 'Optional class documentation string' class_suite