I was surprised that I can use __class__ unqualified inside methods!
*Given these facts:
1) __class__ is not defined in either global or builtin scopes of the interactive session
2) Tested under Python 3.3.3 and Python 2.7.11
Example:
class Z:
def __init__(self):
print(__class__)
Works under Python 3.3.3, but when tested with Python 2.7.11, this raises an error with classic and new-style classes. As usual when we want to use a variable defined inside a class we have to use obj.attr. surprisingly for __class__ it just works!
class Z(object):
a = 20
def __init__(self):
print(__class__)
print(a) # doesn't work
Where does __class__ come from?
Is this a bug?