Tengo un Monostate básico con Python 2.6.Advertencias de destrucción de Python con Monostate __new__ - ¿Alguien puede explicar por qué?
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",)
Qué feliz me da la siguiente advertencia Deprecation ..
untitled:4: DeprecationWarning: object.__new__() takes no parameters
self = object.__new__(cls, *args, **kwargs)
Después de un poco de google Encuentro esto está unido a Bug #1683368. Lo que no puedo entender es lo que esto significa. Se queja de la siguiente línea
self = object.__new__(cls, *args, **kwargs)
Lo que parece estar bien. ¿Alguien puede explicar en laymens términos por qué esto es un problema. Entiendo que "esto es inconsistente con otros complementos, como la lista", pero no estoy seguro de entender por qué. ¿Alguien me explicaría esto y me mostraría la forma correcta de hacerlo?
Gracias
estoy fallando para ver cómo se ignoran? Elimina * args y ** kwargs de nuevo y bombardeará porque __init__ los necesita. Tu última declaración es la que intento evitar :-) Quiero que funcione en 3k. – rh0dium
No puedo discutir con los diseñadores de idiomas. Si dicen "nuevo no toma ningún argumento", lo hago sin argumentos. '__init__' y' __new__' funcionan de forma similar, tal vez su caso de uso debería usar init en lugar de new. –