[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