Python中类似字典的对象,允许设置任意属性
我想在代码中执行的操作:Python中类似字典的对象,允许设置任意属性,python,dictionary,attributes,Python,Dictionary,Attributes,我想在代码中执行的操作: myobj = <SomeBuiltinClass>() myobj.randomattr = 1 print myobj.randomattr ... myobj=() myobj.randomattr=1 打印myobj.randomattr ... 我可以实现一个自定义的SomeClass,它实现\uuuuu setattr\uuuuuuu\uuuuuu getattr\uuuuuu。 但是我想知道是否已经有一个内置的Python类或简单的方法来实
myobj = <SomeBuiltinClass>()
myobj.randomattr = 1
print myobj.randomattr
...
myobj=()
myobj.randomattr=1
打印myobj.randomattr
...
我可以实现一个自定义的SomeClass,它实现\uuuuu setattr\uuuuuuu
\uuuuuu getattr\uuuuuu
。
但是我想知道是否已经有一个内置的Python类或简单的方法来实现这一点?我喜欢使用Bunch习语来实现这一点。这里有一个变体列表和一些讨论。您可以使用一个空类:
class A(object): pass
a = A()
a.randomattr = 1
一种解决方案是使用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
很高兴知道。但Python库中已经有空类了吗?不,没有内置的空类。您可以在一行代码中定义一个空类,如图所示。一行代码与import语句一样短,因此没有必要寻找内置的空类。