[Zope3-Users] Re: Newbie Question
Philipp von Weitershausen
philipp at weitershausen.de
Fri Feb 23 18:14:38 EST 2007
Edward Muller wrote:
> I've done Zope2 stuff in the past, including writing Zope2 Products.
>
> We are working on new hosting software and have decided to use Zope 3.
>
> So we're defining our interfaces and have started to define classes
> based on those interfaces and I have a question...
>
> The simple todo app
> (http://worldcookery.com/files/jeffshell-todo/step1.html) shows the Todo
> class having three attributes (description, details, done). These are
> all defined in the interface using various zope.schema definitions.
>
> But ...
>
> The Boring product (http://products.nidelven-it.no/zope3_boring/) does
> the same thing in the interface with a title attribute. But when it gets
> to the class definition it uses:
>
> def __init__(self, title='Default boring title'):
> self.title = title
>
> The later is more familiar to me coming from Zope 2. Which is right? If
> they are both right, which is *more* right wrt Zope 3 ... and why?
With respect to interfaces, it's always a good idea to have your
objects, incl. newly created ones, comply to the interfaces they promise
to implement. In particular, this means that they should have default
values for the schema attributes. Frameworks like zope.formlib also
happen to rely on that.
My book also happens to show class-level attributes a lot. Lately I've
come to prefer initializing attributes in the constructor (__init__)
instead, though. It's really a matter of taste, in the end. If you like
initializing them in the constructor, go with that...
--
http://worldcookery.com -- Professional Zope documentation and training
Next Zope 3 training at Camp5: http://trizpug.org/boot-camp/camp5
More information about the Zope3-users
mailing list