Если вы настаиваете на том, что вам не нужно определять класс, вы можете использовать некоторые существующие классы. Большинство объектов принадлежат классам "нового стиля", которые не имеют dict, но функции могут иметь произвольные атрибуты:
>>> x = lambda: 0 # any function will do
>>> x.foo = 'bar'
>>> x.bar = 0
>>> x.xyzzy = x
>>> x.foo
'bar'
>>> x.bar
0
>>> x.xyzzy
<function <lambda> at 0x6cf30>
Одна проблема состоит в том, что функции уже имеют некоторые атрибуты, поэтому dir (x) выглядит немного беспорядочно:
>>> dir(x)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__',
'__get__', '__getattribute__', '__hash__', '__init__',
'__module__', '__name__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__str__', 'foo',
'func_closure', 'func_code', 'func_defaults', 'func_dict',
'func_doc', 'func_globals', 'func_name', 'xyzzy']