After a short hiatus because of my summer internship, I am back to blogging, and what better way to start again by summarizing the peculiarities of Python [for people coming from a Java/ C++ background]. So, tighten up your seatbelts, and here goes:
 Python supports multiple inheritence
 Python’s self is the same thing as C++/ Java/ C# this
 There is no function/ method overloading in Python
 All methods in Python are by default virtual, without the explicit use of the keyword
 Python has an in-built copy module that can copy arbitrary Python objects
 Object identity in Python is represented by the keyword is – unlike the == in Java. The == in Python always represents value equality
 Any class in Python can override the __len__ method, which can dictate what the len function returns. If a class defines the __cmp__ method, its objects can be compared using ==.
 There are wrapper classes like UserDict and UserString that extend/ modify the functionality of base classes like dict and string – you may not directly derive from dict and string
 Member variables are called data attributes, and they are defined inside the __init__ method. Static variables are called class attributes, they are defined outside the __init__ method, and do not have the static keyword
 There are no constants in Python
 Nothing is protected in Python
 Anything whose name starts with __ and does not end with it is private (function, method or attribute), and everything else is public – the keywords private and public are not used
This is just the beginning, more to come.