[Zope3-Users] property in view/adapter

Marc Rijken marc at rijken.org
Tue May 10 19:12:29 EDT 2005


Hi Everybody,

I have an adapter Person to Object. Some code:

class Object:
     def __init__(self):
         self.attributes = {}

class NamedObject:
     def __init__(self, context):
         self.context = context

     def getName(self, type):
         return self.context.attributes[type]

     def setName(self, type, value):
         self.context.attributes[type] = value

def nameProperty(type):
     fget = lambda self: self.getName(type)
     fset = lambda self, value: self.setName(type, value)
     return property(fget, fset)

class Person(NamedObject):

     firstname = nameProperty('firstname')

When I try in a view on an Object adapted to Person, the following:

self.context.firstname = 'Marc'

the name will *not* be set and I get no single error. When I call

self.context.setName('firstname', 'Marc')

the name will be set.

The getter (x=self.context.firstname) is functioning without any problems.

It looks like property can not be used as setter in views/adapters. Is 
that the problem? Or is there an other problem?

Marc


More information about the Zope3-users mailing list