tweaking @decorator syntax

Sandy Norton sandskyfly at hotmail.com
Wed Aug 4 12:09:43 EDT 2004


If we are going to be stuck with @decorators for 2.4, then how about
using blocks and indentation to elminate repetition and increase
readability:


Example 1
---------

class Klass:
    def __init__(self, name):
        self.name = name
    
    @staticmethod
        def statmethod1(x):
            return x
        
        def statmethod2(y):
            return y
            
    @classmethod
        def classmethod1(cls):
            return cls
        
        def classmethod2(cls):
            return cls
    
    @funcattrs(name='GvR', language='python')
    @log(file='func.log')
        def sayhello(self):
            print 'hello python world'
        
        def saygoodbye(self):
                    print 'goodby python world'        

Example 2
---------

class Klass:
    def __init__(self, name):
        self.name = name
    
    @staticmethod:
        def statmethod1(x):
            return x
        
        def statmethod2(y):
            return y
            
    @classmethod:
        def classmethod1(cls):
            return cls
        
        def classmethod2(cls):
            return cls
    
    @funcattrs(name='GvR', language='python'), 
        log(file='func.log'):
        def sayhello(self):
            print 'hello python world'
        
        def saygoodbye(self):
                    print 'goodby python world'        


Perhaps, you can eliminate the '@' alltogether:

Example 3
---------

class Klass:
    def __init__(self, name):
        self.name = name
    
    staticmethod:
        def statmethod1(x):
            return x
        
        def statmethod2(y):
            return y
            
    classmethod:
        def classmethod1(cls):
            return cls
        
        def classmethod2(cls):
            return cls
    
    funcattrs(name='GvR', language='python'),
        log(file='func.log'):
        def sayhello(self):
            print 'hello python world'
        
        def saygoodbye(self):
                    print 'goodby python world'        
        

Sandy



More information about the Python-list mailing list