Dynamically modifying "__setattr__"

Greg Ewing greg.ewing at canterbury.ac.nz
Fri Sep 29 23:54:21 EDT 2023


On 28/09/23 10:44 pm, Stefan Ram wrote:
> class A:
>      def __init__( self ):
>          self.__setattr__ = self.setattr
>      def setattr( self, key, value ):
>          print( 'setattr called.' )
> 
>    Any idea how to achieve something like this?

class A:

     def __init__(self):
         self.x = 17
         self.setattr = self.custom_setattr

     def __setattr__(self, key, value):
         self.setattr(key, value)

     def setattr(self, key, value):
         object.__setattr__(self, key, value)

     def custom_setattr(self, key, value):
         print('custom_setattr:', key, '=', value)

a = A()
a.x = 1
print('a.x =', a.x)

-- 
Greg



More information about the Python-list mailing list