Revised PEP 318 - Function/Method Decorator Syntax
Andrew Bennetts
andrew-pythonlist at puzzling.org
Tue Jun 10 09:49:23 EDT 2003
On Tue, Jun 10, 2003 at 12:25:13PM +0000, Kevin Smith wrote:
[...]
> The proposed syntax is general enough that it could be used
> on class definitions as well as shown below.
>
> class foo(object) as classmodifier:
> class definition here
>
> However, there are no obvious parallels for use with other
> descriptors such as property().
Note that you can already do tricky stuff with properties if you really want
to define one all at once:
class EvilProperty(type):
def __new__(cls, name, bases, d):
return property(d.get('get'), d.get('set'), d.get('del'), d['__doc__'])
class C(object):
class x:
"""An evil test property"""
__metaclass__ = EvilProperty
def get(self):
print 'Getting'
return 1
def set(self, value):
print 'Setting to', value
c = C()
print c.x
c.x = 5
print C.x.__doc__
This has the advantage that you can define your property in a single block,
and you don't have to look too far ahead in the nested class to see the
crucial "__metaclass__ = EvilProperty" line.
It does kinda feel like yet-another-gratuitous-use-of-metaclasses, though ;)
-Andrew.
More information about the Python-list
mailing list