Hi all, I have a basic Monostate with Python 2.6.
class Borg(object): __shared_state = {} def __new__(cls, *args, **kwargs): self = object.__new__(cls, *args, **kwargs) self.__dict__ = cls.__shared_state return self def __init__(self, *args, **kwargs): noSend = kwargs.get("noSend", False) reportLevel = kwargs.get("reportLevel", 30) reportMethods = kwargs.get("reportMethods", "BaseReport") contacts= kwargs.get("contacts", None) a = Borg(contacts="Foo", noSend="Bar", ) Which happily gives me the following Deprecation warning.. untitled:4: DeprecationWarning: object.__new__() takes no parameters self = object.__new__(cls, *args, **kwargs) After a bit of googling I find this is attached to Bug #1683368. What I can't figure out is what Guidos answer means. FWIW - It's complaining about the following line self = object.__new__(cls, *args, **kwargs) Which appears (to me) to be OK. Can someone explain in laymens terms why this is a problem. I understand that "this is inconsistent with other built-ins, like list" but I'm not sure I understand why. Would someone explain this show me the right way to do it? I have read Guido's answer on this but I guess I just don't understand his reasoning. In short Guido said the following: "The message means just what it says. :-) There's no point in calling object.new() with more than a class parameter, and any code that did so was just dumping those args into a black hole. The only time when it makes sense for object.new() to ignore extra arguments is when it's not being overridden, but init is being overridden -- then you have a completely default new and the checking of constructor arguments is relegated to init." In my case the args that it dumps them into a black hold is simply not true. I want an unknown set of args and kwargs to simply be forwarded onto init. So what's the problem with this?? Thanks -- http://mail.python.org/mailman/listinfo/python-list