Словарь-подобный объект в Python, который позволяет устанавливать произвольные атрибуты - PullRequest
4 голосов
/ 28 февраля 2010

Что я хочу сделать в своем коде:

myobj = <SomeBuiltinClass>()
myobj.randomattr = 1
print myobj.randomattr
...

Я могу реализовать собственный SomeClass, который реализует __setattr__ __getattr__. Но мне интересно, есть ли уже встроенный класс Python или простой способ сделать это?

Ответы [ 3 ]

8 голосов
/ 28 февраля 2010

Вы можете просто использовать пустой класс:

class A(object): pass

a = A()
a.randomattr = 1
2 голосов
/ 28 февраля 2010

Мне нравится использовать идиому Bunch для этого. Здесь есть список вариантов и некоторые обсуждения здесь .

0 голосов
/ 21 апреля 2011

Одним из решений является использование макетов:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...