Thomas Guettler wrote: > Peter Otten schrieb: >> Thomas Guettler wrote: >> >>> for debugging I want to raise an exception if an attribute is >>> changed on an object. Since it is only for debugging I don't want >>> to change the integer attribute to a property.
>> class A(object): >> def __init__(self): >> self.foo = 42 >> >> a = A() >> b = A() >> >> class B(A): >> @property >> def foo(self): >> return self.__dict__["foo"] >> >> b.__class__ = B >> >> a.foo = "whatever" >> print b.foo >> b.foo = "whatever" > your idea was good, but it does not work with Django ORM Models: > > Traceback (most recent call last): > File "/localhome/modw/django/core/handlers/base.py", line 87, in > get_response > response = callback(request, *callback_args, **callback_kwargs) > File "/localhome/modw/foo/views/filter.py", line 473, in add > return edit(request, 'add') > File "/localhome/modw/foo/views/filter.py", line 493, in edit > filter=form.save() > File "/localhome/modw/foo/views/filter.py", line 457, in save > action=form.save() > File "/localhome/modw/django/forms/models.py", line 315, in save > if self.instance.pk is None: > File "/localhome/modw/django/db/models/base.py", line 292, in > _get_pk_val > return getattr(self, meta.pk.attname) > AttributeError: 'MyAction' object has no attribute 'filter_action_ptr_id' I can't tell what's happening from the traceback alone. Is "filter_action_ptr_id"" your actual "foo" and "MyAction" your "B"? Maybe the relevant setup code would help... Peter -- http://mail.python.org/mailman/listinfo/python-list