Skip to content

Instantly share code, notes, and snippets.

@DRMacIver
Last active December 14, 2015 21:49
Show Gist options
  • Save DRMacIver/5154208 to your computer and use it in GitHub Desktop.
Save DRMacIver/5154208 to your computer and use it in GitHub Desktop.

Revisions

  1. DRMacIver revised this gist Mar 13, 2013. 1 changed file with 5 additions and 2 deletions.
    7 changes: 5 additions & 2 deletions method_invocation.py
    Original file line number Diff line number Diff line change
    @@ -19,10 +19,13 @@ def print1(*args):
    Bar().print2()
    Bar().print3()

    p = Bar().print3
    p()

    """
    Prints:
    (<__main__.Bar instance at 0x7f109c35ecf8>,)
    (<__main__.Printer instance at 0x7f109c35ecb0>,)
    (<__main__.Bar instance at 0x7f0b32bd7dd0>,)
    """
    (<__main__.Bar instance at 0x7f379f67ddd0>,)
    """
  2. DRMacIver created this gist Mar 13, 2013.
    28 changes: 28 additions & 0 deletions method_invocation.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,28 @@
    # Python method invocation is a strange beast
    # Note difference between assigning a callable object that isn't a function
    # and a callable object that is one

    class Printer:
    def __call__(*args):
    print(args)

    def print_stuff(*args):
    print(args)

    class Bar:
    def print1(*args):
    print(args)
    print2 = Printer()
    print3 = print_stuff

    Bar().print1()
    Bar().print2()
    Bar().print3()

    """
    Prints:
    (<__main__.Bar instance at 0x7f109c35ecf8>,)
    (<__main__.Printer instance at 0x7f109c35ecb0>,)
    (<__main__.Bar instance at 0x7f0b32bd7dd0>,)
    """