我正在尝试实现这一点,看看是否可行:
下面是我目前的解决方案:
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
如何解决?
请您参考如下方法:
Python 自己已经做到了这一点:
>>> class A(object):
pass
>>> a = A()
>>> setattr(a, 'z', 5)
>>> a.z
5
>>> getattr(a, 'z')
5
>>> delattr(a, 'z')
>>> a.z
AttributeError: 'A' object has no attribute 'z'
阅读有关 Python 的文档 data model了解更多详情。
