Hi Tim, Tim Cook schrieb: > Thanks for all the assistance. > > On Fri, 2009-01-16 at 18:05 +0100, Martijn Faassen wrote: > >> Yes, you do create new schema fields by subclassing from Field. >> >> It's just that we saw you putting a field not in a schema but in what >> looked like a concrete object. > > This has given me a BIG pause while I'm working on a simpler example. > It may actually solve the problem. > > > Are you saying that in order to create a Field that can be used as an > attribute of another class; I should define it in an interface and ONLY > in an interface? > > Such like pseudo: > > import Field > class IAbc(Interface) > > myNewField = Field( > ........ > > and then when I need to use it in a class, simply state that that class > implements(IAbc)?
that's what Dan Korostelev said early in the thread: Use the Field only in a schema definition. You define your schema in an interface class. The interface class describes the interface (fields, attributes, methods) that a class implements. from zope.interface import Interface, implements from zope.schema import TextLine class IMyTitleSchema(Interface): title = TextLine(...) class MyTitleClass(object or some other baseclass): implements(IMyTitleSchema) title = u"" The interface tells other components, e.g. forms: An object instanciated from MyTitleClass has an attribute 'title', and title is a TextLine. So a form can render the correct widget. Other components do other things with this information, like validation when the title attribute is written. You never use a schema field in something other than an interface class. Don't do: class MyTitleClass(...): ... title = TextLine(...) obj = MyTitleClass() Sure you can have specialized fields that subclass from Field, TextLine, or another base class. E.g. RegistrationNumber(TextLine) that takes care to validate the input for a special format. But you use them in an interface class, not the class that implements the interface. ..Carsten _______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )