[Zope-dev] adding attributes to a python product

Steve Spicklemire steve@spvi.com
Thu, 29 Jun 2000 09:10:43 -0500 (EST)


Steve,

	If the attribute is immutable, just define it as
a 'class' variable, rather than in the constructor.

e.g., 

class Foo(.. ):

    newAttribute = 'hello?'


You can of course *change* it in the constructor for new
object, but all your old objects will just use the class
variable. If it's mutable.. then you need to fix it in
__setstate__().

-steve


>>>>> "Steve" == Steve Alexander <steve@cat-box.net> writes:

    Steve> Hi folks, I have a Python Product that I'm
    Steve> developing. During the course of development, I want to add
    Steve> a new attribute. All new instances get this attribute, as
    Steve> it is defined with a default value in the constructor.

    Steve> In addition, all instances that get edited via the web get
    Steve> the attribute, as the edit-processing method is defined to
    Steve> have a default value for this attribute.

    Steve> Is there any way of interacting with the ZODB persistence
    Steve> machinery to add the default attribute to all instances as
    Steve> they are brought out of persistent storage -- so that I can
    Steve> just restart Zope, and have all of my instances updated as
    Steve> I use them ?

    Steve> I can't find the right method or whatever in the ZODB
    Steve> on-line docs, or in the source.

    Steve> Thanks for any help.

    Steve> -- Steve Alexander Software Engineer Cat-Box limited
    Steve> http://www.cat-box.net

    Steve> _______________________________________________ Zope-Dev
    Steve> maillist - Zope-Dev@zope.org
    Steve> http://lists.zope.org/mailman/listinfo/zope-dev ** No cross
    Steve> posts or HTML encoding!  ** (Related lists -
    Steve> http://lists.zope.org/mailman/listinfo/zope-announce
    Steve> http://lists.zope.org/mailman/listinfo/zope )