Skip to main content
 首页 » 编程设计

python之如何为类动态设置任意属性

2025年05月04日11kevingrace

我正在尝试实现这一点,看看是否可行:

下面是我目前的解决方案:

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了解更多详情。