[Python-Dev] PEP 359: The "make" Statement

Ian Bicking ianb at colorstudy.com
Fri Apr 14 23:16:29 CEST 2006


BJörn Lindqvist wrote:
> [nice way to declare properties with "make"]
>>>>Of course, properties are only one of the many possible uses of the
>>make statement. The make statement is useful in essentially any
>>situation where a name is associated with a namespace. So, for
>>> So far, in this thread that is the only useful use of the make
> statement that has been presented. I'd like to see more examples.

In SQLObject I would prefer:
class Foo(SQLObject):
 make IntCol bar:
 notNull = True
In FormEncode I would prefer:
make Schema registration:
 make String name:
 max_length = 100
 not_empty = True
 make PostalCode postal_code:
 not_empty = True
 make Int age:
 min = 18
In another thread on the python-3000 list I suggested (using :
class Point(object):
 make setonce x:
 "x coordinate"
 make setonce y:
 "y coordinate"
For a read-only x and y property (setonce because they have to be set to 
*something*, but just never re-set).
Interfaces are nice:
make interface IValidator:
 make attribute if_empty:
 """If this attribute is not NoDefault, then this value
 will be used in lieue of an empty value"""
 default = NoDefault
 def to_python(value, state): """..."""
Another descriptor, stricttype 
(http://svn.colorstudy.com/home/ianb/recipes/stricttype.py):
class Pixel(object):
 make stricttype x:
 type = int
 make stricttype y:
 type = int
(Both this descriptor and setonce need to know their name if they are 
going to store their value in the object in a stable location)
> It would be really cool if you could go through the standard library,
> and replace code there with code using the make statement. I think a
> patch showing how much nicer good Python code would be with the make
> statement would be a very convincing argument.

I don't know if the standard library will have a whole lot; "make" is 
really only useful when frameworks are written to use it, and there's 
just not a lot of framework in the standard library. Maybe:
make OptionParser myparser:
 make Option verbose:
 short = '-v'
 help = """...""
-- 
Ian Bicking / ianb at colorstudy.com / http://blog.ianbicking.org


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /