Python中允许设置任意属性的字典类似对象
我想在我的代码中做的事情是:
myobj = <SomeBuiltinClass>()
myobj.randomattr = 1
print myobj.randomattr
...
我可以自己创建一个叫做 SomeClass 的类,并在里面实现 __setattr__
和 __getattr__
这两个功能。不过,我在想,Python里有没有现成的类或者简单的方法可以做到这一点呢?
3 个回答
0
一种解决方案是使用模拟对象(mock):
from mock import Mock
myobj = Mock()
myobj.randomattr = 1
print myobj.randomattr
第二种解决方案是使用命名元组(namedtuple):
from collections import namedtuple
myobj = namedtuple('MyObject', '')
myobj.randomattr = 1
print myobj.randomattr
2
我喜欢用“Bunch”这个方法来处理这个问题。这里有一些不同的变种和讨论,大家可以在这里查看。
8
你可以直接使用一个空的类:
class A(object): pass
a = A()
a.randomattr = 1