Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #8587

Re: Using decorators with argument in Python

References (1 earlier) <4e0a0a8b$1@dnews.tpgi.com.au> <4E0B5F7C.7030802@codicesoftware.com> <4E0B7D6A.1080404@stoneleaf.us> <BANLkTimW4=Gdvfh4d5sD-Phzo8qJUuXbrw@mail.gmail.com> <4E0B9949.1040805@stoneleaf.us>
From Ian Kelly <ian.g.kelly@gmail.com>
Date 2011-06-29 15:26 -0600
Subject Re: Using decorators with argument in Python
Newsgroups comp.lang.python
Message-ID <mailman.513.1309382813.1164.python-list@python.org> (permalink)

Show all headers | View raw


On Wed, Jun 29, 2011 at 3:29 PM, Ethan Furman <ethan@stoneleaf.us> wrote:
> 8<----------------------------------------------------------------
> class enclose(object):
>    func = None
>    def __init__(self, char='#'):
>        self.char = char
>        if callable(char):  # was a function passed in directly?
>            self.char = '#' # use default char
>            self.func = char
>    def __call__(self, func=None, *args, **kwargs):
>        if self.func is None:
>            self.func = func
>            return self
>        if func is not None:
>            args = (func, ) + args
>        return self._call(*args, **kwargs)
>    def _call(self, *args, **kwargs):
>        print("\n" + self.char * 50)
>        self.func(*args, **kwargs)
>        print(self.char * 50 + '\n')
> if __name__ == '__main__':
>    @enclose
>    def test1():
>        print('Spam!')
>    @enclose('-')
>    def test2():
>        print('Eggs!')
>    @enclose
>    def test3(string):
>        print(string)
>    @enclose('^')
>    def test4(string):
>        print(string)
>    test1()
>    test2()
>    test3('Python')
>    test4('Rules!  ;)')
> 8<----------------------------------------------------------------


@enclose
def test5(string, func):
     print(func(string))
test5('broken', func=str.upper)

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Using decorators with argument in Python Jigar Tanna <poisonousrattle5@gmail.com> - 2011-06-28 09:52 -0700
  Re: Using decorators with argument in Python Lie Ryan <lie.1296@gmail.com> - 2011-06-29 03:06 +1000
    Re: Using decorators with argument in Python John Posner <jjposner@codicesoftware.com> - 2011-06-29 13:23 -0400
    Re: Using decorators with argument in Python Ethan Furman <ethan@stoneleaf.us> - 2011-06-29 12:30 -0700
    Re: Using decorators with argument in Python Ian Kelly <ian.g.kelly@gmail.com> - 2011-06-29 13:29 -0600
    Re: Using decorators with argument in Python Ethan Furman <ethan@stoneleaf.us> - 2011-06-29 14:29 -0700
    Re: Using decorators with argument in Python Ian Kelly <ian.g.kelly@gmail.com> - 2011-06-29 15:26 -0600
    Re: Using decorators with argument in Python Ethan Furman <ethan@stoneleaf.us> - 2011-06-29 14:51 -0700
    Re: Using decorators with argument in Python Duncan Booth <duncan.booth@invalid.invalid> - 2011-06-30 09:00 +0000
    Re: Using decorators with argument in Python John Posner <jjposner@codicesoftware.com> - 2011-07-01 11:18 -0400
  Re: Using decorators with argument in Python Ian Kelly <ian.g.kelly@gmail.com> - 2011-06-28 11:20 -0600
  Re: Using decorators with argument in Python Ben Finney <ben+python@benfinney.id.au> - 2011-06-29 08:19 +1000

csiph-web