En Python, en supposant que obj
a le type objtype
, sont super(cls,obj)
et super(cls,objtype)
le même?En supposant que `obj` a le type` objtype`, sont `super (cls, obj)` et `super (cls, objtype)` identiques?
Est-il exact que super(cls,obj)
convertit obj
à un autre objet dont la classe est une superclasse de objtype
qui est après cls
dans la MRO de objtype
?
Que signifie super(cls,objtype)
alors?
Par exemple, étant donné une mise en œuvre du modèle de conception Singleton:
class Singleton(object):
_singletons = {}
def __new__(cls, *args, **kwds):
if cls not in cls._singletons:
cls._singletons[cls] = super(Singleton, cls).__new__(cls)
return cls._singletons[cls]
une sous-classe de Singleton
(qui n'a pas encore outrepasser __new__
) a exactement une instance.
Que signifie super(Singleton, cls)
, où cls
est une classe? Que retourne-t-il?
Merci.