[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