Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> class A(object): ... def a(self): ... print 42 ... >>> a = A() >>> a.a > >>> dir(a.a) ['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__format__', '__func__', '__get__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'im_class', 'im_func', 'im_self'] >>> type(a.a) >>> def foo(self): ... print 41 ... >>> a.foo = foo >>> type(a.foo); type(a.foo); >>> a.foo() Traceback (most recent call last): File "", line 1, in TypeError: foo() takes exactly 1 argument (0 given) >>> a.foo(None) 41 >>> a.foo >>>