Python Classes

class MyInt:
    '''Docstring for MyInt'''
    def __init__(self, val):
        self.value = val

    def __add__(self, other):
        return MyInt(self.value + other)

    def __repr__(self):
        return f'MyInt({self.value})'

    def __str__(self):
        return f'{self.value}'

    def square(self):
        "Return the square of the value"
        return MyInt(self.value**2)



num = MyInt(42)
num + 5  # calls .__add__ the .__repr__ methods






# In Jupyter use ``??`` to see source code


class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary): = name
      self.salary = salary
      Employee.empCount += 1
   def __del__(self):
      class_name = self.__class__.__name__
      print class_name, "destroyed"

   def displayCount(self):
      print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ",,  ", Salary: ", self.salary

The getattr(obj, name[, default]) − to access the attribute of object. The hasattr(obj,name) − to check if an attribute exists or not. The setattr(obj,name,value) − to set an attribute. If attribute does not exist, then it would be created. The delattr(obj, name) − to delete an attribute.

Common dunder variables: __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.

# multiple inheritance
class SubClassName (ParentClass1[, ParentClass2, ...]):
   'Optional class documentation string'

# Common dunder methods
__init__ ( self [,args...] ) 
Constructor (with any optional arguments) 
Sample Call : obj = className(args)

__del__( self )
Destructor, deletes an object
Sample Call : del obj

__repr__( self )
Evaluable string representation
Sample Call : repr(obj)

__str__( self )
Printable string representation
Sample Call : str(obj)

__cmp__ ( self, x )
Object comparison
Sample Call : cmp(obj, x)