Articles of super

El comportamiento de Python super () no es confiable

Por alguna razón, el método super() no siempre se comporta como se espera, optando por regresar: TypeError(‘super(type, obj): obj must be an instance or subtype of type)’ Entiendo lo que significa el error. No entiendo por qué viene como un error. Aquí está el fragmento de código que se está rompiendo. Todos los objetos en […]

Python multi-herencia, __init__

Con respecto a la herencia múltiple, cuando llamo al super . __init__ , ¿por qué no se llama a la función __init__ de __init__ ? Gracias. class parent(object): var1=1 var2=2 def __init__(self,x=1,y=2): self.var1=x self.var2=y class parent2(object): var4=11 var5=12 def __init__(self,x=3,y=4): self.var4=x self.var5=y def parprint(self): print self.var4 print self.var5 class child(parent, parent2): var3=5 def __init__(self,x,y): super(child, […]

Python, Anulando un método de clase heredado

Tengo dos clases, Field y Background . Se ven un poco así: class Field( object ): def __init__( self, a, b ): self.a = a self.b = b self.field = self.buildField() def buildField( self ): field = [0,0,0] return field class Background( Field ): def __init__( self, a, b, c ): super(Background, self).__init__( a, b […]

“MetaClass”, “__new__”, “cls” y “super”: ¿cuál es el mecanismo exactamente?

He leído mensajes como estos: ¿Qué es una metaclase en Python? ¿Cuáles son sus casos de uso (concretos) para metaclases en Python? El Super de Python es ingenioso, pero no puedes usarlo Pero de alguna manera me confundí. Muchas confusiones como: ¿Cuándo y por qué tendría que hacer algo como lo siguiente? # Refer link1 […]

Python 2.7 __init __ () toma exactamente 2 argumentos (3 dados)

Tengo estas clases. Person es la clase de padres y el Student es la clase de niños: class Person(object): def __init__(self, name): self.name = name class Student(Person): def __init__(self, avr, name): self.avr = avr super(Student, self).__init__(self, name) Recibo este error cuando bash crear una instancia de Student : __init__() takes exactly 2 arguments (3 given) […]

El objeto ‘super’ no tiene atributo ‘__eq__’

Cuando bash anular el método mágico __eq__ , y uso super para acceder al método base que se encuentra en el object , __eq__ un error. No hay forma de que esto sea un error, pero seguro que se siente como uno: class A(object): def __eq__(self, other): return super(A, self).__eq__(other) A() == 0 # raises […]

¿Puedo usar Python 3 super () en Python 2.5.6?

¿Puedo usar la syntax super() limpia de Python 3 en Python 2.5.6? Tal vez con algún tipo de __future__ importación?

¿Cómo puedo usar super () con un argumento en Python?

Mientras leía sobre el objeto super() en Python, leí la siguiente statement: Si se omite el segundo argumento, el objeto super devuelto es independiente ¿Qué significa esto exactamente y cómo uso super() con un argumento en el código?

No puedo hacer que super () funcione en Python 2.7

Con un simple par de clases, no puedo trabajar super: class A(object): q = ‘foo’ class B(A): q = ‘bar’ def __init__(self): self.a = super(A, self).q a = B() errores como tal: ————————————————————————— AttributeError Traceback (most recent call last) in () 5 def __init__(self): 6 self.a = super(A, self).q —-> 7 a = B() in […]

¿Cómo funciona realmente el super () de Python, en el caso general?

Hay una gran cantidad de excelentes recursos en super() , incluida esta gran publicación de blog que aparece mucho, así como muchas preguntas sobre el desbordamiento de stack. Sin embargo, siento que todos ellos no llegan a explicar cómo funciona en el caso más general (con gráficos de herencia arbitrarios), así como lo que está […]