class Vehicle(object): """ Vehicle class """ count = 0; # class attribute def __init__(self, brand): self.__brand = brand Vehicle.count += 1 @property def brand(self): return self.__brand @brand.setter def brand(self, b): self.__brand = b @brand.deleter def brand(self): del self.__brand def __str__(self): return "Brand: %s" % self.__brand def __getattr__(self, attr): return "~" def __del__(self): Vehicle.count -= 1 print("Delete %s, %d vehicles left ..." % (self.__brand, Vehicle.count)) def main(): v1 = Vehicle("Lincoln") import inspect from pprint import pprint m = inspect.getmembers(v1, inspect.ismethod) pprint(m) if __name__ == '__main__': main()