在Python中可以把property动态的绑定的object的继承类中,并且可以定义带有参数的get和set方法。
比如,我们定义了全局变量g,然后通过两个方法来存取g的内容
def get_g(self):
return g
def set_g(self, _g):
global g
g = _g
定义一个object的继承类A:
class A(object):
pass
然后可以通过setattr把一个property动态的bind到A中:
setattr(A, 'g', property(get_g, set_g))
我们我们可能还要对动态bind做一些定制,比如我们可能有两个全局变量,g1和g2,希望在绑定时动态的决定到底是绑谁,那么我们就可以这么做:
def get_pp(name):
def get_g(self):
return globals()[name]
def set_g(self, _g):
globals()[name] = _g
return property(get_g, set_g)
然后可以setattr(A, 'g', get_pp('g1') ),从而把g1关联到的A的‘g’属性。