Christian Heimes added the comment: I have verified that the __init__ function isn't executed when SimpleNamespace is subclasses. I guess that's happening:
http://docs.python.org/py3k/c-api/typeobj.html?highlight=tp_init#PyTypeObject.tp_init "If the tp_new function returns an instance of some other type that is not a subtype of the original type, no tp_init function is called; if tp_new returns an instance of a subtype of the original type, the subtype’s tp_init is called." namespace_new always returns a namespace object no matter what. As namespace is not a subclass of the Foo (the other way around), the type check in type_call() fails and __init__ isn't called. The tp_new method needs a fix. That looks all wrong to me: >>> import types >>> class SubNS(types.SimpleNamespace): ... pass ... >>> SubNS.__new__(SubNS) namespace() That's about right: >>> class SubStr(str): ... pass ... >>> type(SubStr.__new__(SubStr)) <class '__main__.SubStr'> ---------- nosy: +christian.heimes _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue16160> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com