我想在Python中实现一个类,其中修改其属性的子集会导致调用特定的类方法。我看到Python提供了很多方法来实现我想要的东西,但我不确定哪种方法是实现这一目标的最恐怖和最简单的方式。
例如,假设我们的课程Foo
包含属性x
,y
,z
,我们有兴趣拦截对属性{{1}的修改}和x
。每当有人拨打y
或foo.x = ...
时,我都希望调用方法foo.y = ...
。另外,我真的不在乎是否必须为每个属性使用包装器,只要这个包装器只需要写一次,例如,以某种方式拦截对几乎不存在的方法foo.bar
和foo.set_x(...)
到foo.set_y(...)
的调用。
答案 0 :(得分:0)
使用Python中的新类实际上非常容易,它基于object
类构建:
class Foo ( object ) :
def __setattr__ ( self, name, value ) :
self.bar( name, value )
object.__setattr__( self, name, value )
def bar ( self, name, value ) :
print( 'Setting {} to {}.'.format( name, value ) )