[Python-Dev] Another decorator syntax idea

barnesc at engr.orst.edu barnesc at engr.orst.edu
Sat Aug 7 02:38:27 CEST 2004


Another decorator syntax idea

Using Guido's example:

--------------------
@ Symbols
--------------------

class C(object):

    @staticmethod
    @funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]", \
               status="experimental", author="BDFL")
    def longMethodNameForEffect(longArgumentOne=None,
                                longArgumentTwo=42):
        """This method blah, blah.

        It supports the following arguments:
	- longArgumentOne -- a string giving ...
        - longArgumentTwo -- a number giving ...

	blah, blah.

	"""
        raise NotYetImplemented

--------------------
decorate keyword
--------------------

class C(object):

    def longMethodNameForEffect(longArgumentOne=None,
                                longArgumentTwo=42):
        decorate:
            staticmethod
            funcattrs(grammar="'@' dotted_name [ '(' [arglist] ')' ]", \
                      status="experimental", author="BDFL")]
        """This method blah, blah.

        It supports the following arguments:
	- longArgumentOne -- a string giving ...
        - longArgumentTwo -- a number giving ...

	blah, blah.

	"""
        raise NotYetImplemented

Pros:
 - Doesn't hide the function name behind @ garbage.
 - 'decorate' is easier to look at than '@'.
 - 'decorate' is more meaningful to most readers than '@'.
 - Block structure isolates decorators from surrounding code,
   making them more readable.
 - Indentation rules are consistent with the rest of Python.

Cons:
 - Not pear shaped.

 - Connelly


More information about the Python-Dev mailing list