In module a.py
def task(): 
    print "task called"
a = task
class A:
    func = task              # this show error unbound method
    #func = task.__call__    # if i replace with this work
    def __init__(self):
        self.func_1 = task
    def test_1(self):
        self.func_1()
    @classmethod
    def test(cls):
        cls.func()
a()
A().test_1()
A.test()
Output:
task called
task called
Traceback (most recent call last):
  File "a.py", line 26, in <module>
     A.test()
  File "a.py", line 21, in test
     cls.func()
TypeError: unbound method task() must be called with A instance as 
first argument (got nothing instead)
In the module, I can easily assign a function to a variable. When inside class try to assign module level function to class variable func = task it shows error, to remove this error I have to replace it with func = task.__call__ But when I assign to instance variable its work self.func_1 = task.
My Question is: why I can't assign a module level function to a class variable without __call__ and when the same function I can assign to an instance variable is working.
 
    