Articles of super

: confundido por super ()

Posible duplicado: Entendiendo Python super () Subclases de clase B clase A , por lo que en B’s __init__ deberíamos llamar A’s __init__ así: class B(A): def __init__(self): A.__init__(self) Pero con super() , vi algo como esto: class B(A): def __init__(self): super(B, self).__init__() #or super().__init__() Mis preguntas son: ¿Por qué no super(B, self).__init__(self) ? ¿Solo […]

¿Ocurre algo de magia cuando llamo `super (some_cls)`?

Mientras investigaba esta pregunta , me encontré con este extraño comportamiento de super argumento único: Llamar a super(some_class).__init__() funciona dentro de un método de some_class (o una subclase del mismo), pero lanza una excepción cuando se llama en cualquier otro lugar. Ejemplo de código: class A(): def __init__(self): super(A).__init__() # doesn’t throw exception a = […]

¿Por qué OrderedDict no usa super?

Podemos crear un OrderedCounter trivial utilizando la herencia múltiple: >>> from collections import Counter, OrderedDict >>> class OrderedCounter(Counter, OrderedDict): … pass … >>> OrderedCounter(‘Mississippi’).items() [(‘M’, 1), (‘i’, 4), (‘s’, 4), (‘p’, 2)] Corríjame si me equivoco, pero esto se basa fundamentalmente en el hecho de que Counter usa super : class Counter(dict): def __init__(*args, **kwds): […]

Diferentes formas de usar __init__ para PyQt4

Entonces … estoy trabajando para intentar pasar de Python básico a alguna progtwigción GUI, usando PyQt4. Estoy viendo un par de libros y tutoriales diferentes, y cada uno parece tener una forma ligeramente diferente de comenzar la definición de clase. Un tutorial comienza las clases así: class Example(QtGui.QDialog): def __init__(self): super(Example, self).__init__() Otro libro lo […]

¿Qué quiere decir con el ‘súper objeto devuelto no está enlazado’ en python?

De acuerdo con http://docs.python.org/2/library/functions.html#super , Si se omite el segundo argumento, el objeto super devuelto es independiente. Que es super (tipo). Me pregunto qué es ilimitado y cuándo está limitado.

¿Cómo hacer que funcione super () llenando manualmente la celda __class__?

En Python 3, se puede usar super() lugar de super(MyClass, self) , pero esto solo funciona en métodos que se definieron dentro de la clase. Como se describe en el artículo de Michele Simionato, el siguiente ejemplo no funciona: def __init__(self): print(‘calling __init__’) super().__init__() class C(object): __init__ = __init__ if __name__ == ‘__main__’: c = […]

Usando super () en clases anidadas

Imagina esto: class A(object): class B(object): def __init__(self): super(B, self).__init__() Esto crea un error: NameError: el nombre global B no está definido. He intentado AB , pero luego dice que A no está definido. Actualizar: He encontrado el problema. He tenido una clase como esta: class A(object): class B(object): def __init__(self): super(B, self).__init__() someattribute = […]

Python self y super en herencia múltiple.

En la charla de Raymond Hettinger, ” Super considerado súper habla ” en PyCon 2015, explica las ventajas de usar super en Python en el contexto de herencia múltiple. Este es uno de los ejemplos que Raymond utilizó durante su charla: class DoughFactory(object): def get_dough(self): return ‘insecticide treated wheat dough’ class Pizza(DoughFactory): def order_pizza(self, *toppings): […]

Python2 y Python3: __init__ y __new__

He leído otras preguntas que explican la diferencia entre __init__ y __new__ pero no entiendo por qué en el siguiente código con python 2: init y Python3: new init El código de muestra: class ExampleClass(): def __new__(cls): print (“new”) return super().__new__(cls) def __init__(self): print (“init”) example = ExampleClass()

Python 3.6: O se me escapa algo, ya sea la escritura genérica rompe el superencadenamiento por herencia

Primero ejecuté el siguiente código, que salió muy bien: class Monster: def __init__(self): self._can_do = [] print(“created a monster”) super().__init__() class Race(Monster): “”” all races must derive from this “”” def __init__(self): super().__init__() print(“created a race x”) class Human(Race): def __init__(self): super().__init__() self._can_do.append(“Do nothing special !”) print(“created a human”) class Elf(Race): def __init__(self): super().__init__() self._can_do.append(“Avoid […]