James Allwyn wrote:

used the following to get it to also provide
this as a property:

rating = property(getRating)
Yes, but I would not offer both. I would limit the
interface to the property only, because the property can used more easily generating generic view such as schemadisplay, add/editform and
My adapter provides a method getRating. I've

I'm interested in the theory behind whether to provide
a method or a property from an adapter. I had
initially used a method, because I was following the
examples from the books (which are on the ISized
adapter, which provides two methods). Then I noticed
something along the lines of foo=property(getFoo) in
Stephan's book, which seemed to turn the getFoo method
into a foo property. Why is one better than the other?
Stephan seems to use it particularly when he has
getters and setters defined - in the case of my
ratings I think they will be calculated rather than
set, so would this lessen the relevance of the
providing a property rather than a method?
Definitly both are right and the decision might often be a question of personal taste, but in certain circumstances the properties are more convenient for example:
- Reuse of interface information:
see zope.schema: Field declarations ('Interface' to a single attribute) have a defined api.
- Getter/setter for free using field information of an interface:
  See zope.schema.fieldproperty: foo= FieldProperty(IFoo['foo'])
-  Use widgets to provide HTML-represantions for display and form inputs
- The form framework (zope.app.form) respects solely the schema part of an interface to provide its generic views
- ...

So I judget your case only by convenience and suggested therefore the properties.


Zope3-users mailing list

Reply via email to