Ich habe einen grundlegenden Monostate mit Python 2.6.Python Verfall Warnungen mit Monostate __new__ - Kann jemand erklären warum?
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",)
Was mich glücklich die folgende Deprecation Warnung gibt ..
untitled:4: DeprecationWarning: object.__new__() takes no parameters
self = object.__new__(cls, *args, **kwargs)
Nach ein bisschen googeln ich diese finden an Bug #1683368 angebracht. Was ich nicht herausfinden kann, ist, was das bedeutet. Es beschwert sich über die folgende Zeile
self = object.__new__(cls, *args, **kwargs)
Die scheint in Ordnung zu sein. Kann jemand in Laien Begriffe erklären, warum dies ein Problem ist. Ich verstehe, dass "dies inkonsistent ist mit anderen eingebauten, wie Liste", aber ich bin mir nicht sicher, warum ich verstehe. Würde mir jemand erklären, dass das der richtige Weg ist?
Dank
ich Fehler zu sehen, wie sie ignoriert werden? Nimm * args und ** kwargs von new heraus und es wird bombardieren, weil sie von __init__ benötigt werden, was sie erwartet. Sie letzte Aussage ist die, die ich verhindern will :-) Ich will es in 3k arbeiten. – rh0dium
Ich kann nicht mit den Sprachdesignern streiten. Wenn sie sagen "Neues braucht keine Argumente", lasse ich es keine Argumente nehmen. '__init__' und' __new__' funktionieren ähnlich, vielleicht sollte Ihr Anwendungsfall init anstelle von new sein. –