我想实现这个只是为了看看,如果有可能:如何动态设置一个类的任意属性?
而下面是我目前的解决方案:
class A(object):
def fset(self, x, value):
self.__dict__.update({x:value})
def fget(self, x):
return self.x
def fdel(self, x):
del self.x
但它不完全,fget和FDEL功能不能很好地工作,例如
>>> a = A()
>>> a.fset('z', 5)
>>> a.z
5
>>> a.fget('z')
'A' object has no attribute 'x'
>>> a.fget(z)
name 'z' is not defined
>>> a.fdel(z)
NameError: name 'z' is not defined
>>> a.fdel('z')
AttributeError: x
如何解决?
其实那些内建自己只是包装该对象的'magic'__getattribute__','__setattr__'和'__delattr__'方法是自己的。它们可以被重写以实现自定义行为。 – jbaiter
我不会去那么远,但是:) –