2

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?

GIZ
  • 4,409
  • 1
  • 24
  • 43

0 Answers0