class Shape:
classAttrib = 0
__notVisibleOutside = 0 # double underscore prefix
def __init__( self, x=0, y=0):
print ("Shape constructor")
self.x = x
self.y = y
def __del__(self):
class_name = self.__class__.__name__
print (class_name, "destroyed")
def setXY(self, x, y):
self.x = x
self.y = y
def getXY(self):
return (self.x, self.y)
def setAttrib(self, attrib):
Shape.classAttrib = attrib
class Triangle(Shape):
def __init__(self, x=0, y=0):
self.x = x
self.y = y
print ("Triangle constructor")
def childMethod(self):
print ('Calling child method')
def __del__(self):
class_name = self.__class__.__name__
print (class_name, "destroyed")
triangle = Triangle(5, 2)
print( triangle.getXY() )
triangle.setXY(10, 10)
print( triangle.getXY() )
triangle.setAttrib(100)
print( triangle.classAttrib )
del triangle
Operator overloading
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print (v1 + v2)