Articles of super

¿Por qué y cómo usar el super de Python (tipo 1, tipo 2)?

super tiene 2 args, super(type, obj_of_type-or-subclass_of_type) Entiendo cómo y por qué usar super con el 2do arg siendo obj_of_type. Pero no entiendo el asunto para la segunda subclase de arg. Cualquiera puede mostrar por qué y cómo?

Python super (Class, self) .method vs super (Parent, self) .method

Esta pregunta se deriva de la siguiente pregunta , digamos que la class B extiende la class A class A(object): def do_work(self): print 123 class B(A): def do_work(self): super(B,self).do_work() # versus the next statement super(A,self).do_work() # what’s the difference?

¿Por qué es la magia súper () de Python 3.x?

En Python 3.x, se puede llamar a super() sin argumentos: class A(object): def x(self): print(“Hey now”) class B(A): def x(self): super().x() >>> B().x() Hey now Para hacer este trabajo, se realiza algo de magia en tiempo de comstackción, una consecuencia de la cual es que el siguiente código (que vuelve a super_ super a super_ […]

súper confuso Python herencia múltiple super ()

Estaba jugando con la herencia múltiple en Python y me encuentro con una situación que no puedo entender cómo sucedió. Aquí está el diseño de la herencia: AF / \ | BC | \ | / \ | / D El diamante ABCD que todo el mundo conoce. Además de una clase extra “F”, la […]

python3 – comportamiento de super () en multi-herencia

Sé que la súper () y la herencia múltiple ya se han discutido aquí. Pero no encontré una solución con respecto a mi problema específico en python3. Supongamos que tenemos: #! /usr/bin/env python3 class A(object): def __init__(self): super().__init__() def foo(self): print(“The”) class B(object): def __init__(self): super().__init__() def foo(self): print(“world”) class C(B): def __init__(self): super().__init__() def […]

interacción super () y @staticmethod

¿Super () no está destinado a ser utilizado con métodos estáticos? Cuando bash algo como class First(object): @staticmethod def getlist(): return [‘first’] class Second(First): @staticmethod def getlist(): l = super(Second).getlist() l.append(‘second’) return l a = Second.getlist() print a Obtuve el siguiente error Traceback (most recent call last): File “asdf.py”, line 13, in a = Second.getlist() […]

Usando super con un método de clase

Estoy tratando de aprender la función super () en Python. Pensé que lo entendía hasta que llegué a este ejemplo (2.6) y me encontré atrapado. http://www.cafepy.com/article/python_attributes_and_methods/python_attributes_and_methods.html#super-with-classmethod-example Traceback (most recent call last): File “”, line 1, in File “test.py”, line 9, in do_something do_something = classmethod(do_something) TypeError: unbound method do_something() must be called with B instance […]

desmitificar super en python?

Estaba tratando de entender cómo funciona Super en Python y probé el siguiente ejemplo: class A(object): def __init__(self): print “in A’s init” class B(object): def __init__(self): print “in B’s init” class C(A,B): def __init__(self): super(C,self).__init__() print “In C” if __name__==”__main__”: c=C() bastante simple .. Y probé las siguientes súper llamadas (mostradas con los resultados aquí): […]

¿Por qué tenemos que usar los métodos __dunder__ en lugar de los operadores cuando llamamos a través de super?

¿Por qué tenemos que usar __getitem__ lugar del acceso habitual del operador? class MyDict(dict): def __getitem__(self, key): return super()[key] Obtenemos TypeError: ‘super’ object is not subscriptable . En su lugar, debemos usar super().__getitem__(key) , pero nunca entendí completamente por qué: ¿qué es exactamente lo que impidió que se implementara super de una manera que permitiera […]

¿Cuál es un ejemplo básico de herencia simple usando la palabra clave super () en Python?

Digamos que tengo las siguientes clases configuradas: class Foo: def __init__(self, frob, frotz): self.frobnicate = frob self.frotz = frotz class Bar: def __init__(self, frob, frizzle): self.frobnicate = frob self.frotz = 34 self.frazzle = frizzle ¿Cómo puedo (si puedo) usar super () en este contexto para eliminar el código duplicado?