Articles of herencia de

Práctica recomendada de herencia: * args, ** kwargs o especificando explícitamente los parámetros

A menudo me encuentro sobreescribiendo los métodos de una clase padre, y nunca puedo decidir si debo enumerar explícitamente los parámetros dados o simplemente usar una manta *args, **kwargs construct. ¿Una versión es mejor que la otra? ¿Hay una mejor práctica? ¿Qué (dis-) ventajas me estoy perdiendo? class Parent(object): def save(self, commit=True): # … class […]

Herencia múltiple en python3 con diferentes firmas

Tengo tres clases: A , B y C C hereda de A y B (en este orden). Las firmas constructoras de A y B son diferentes. ¿Cómo puedo llamar a los métodos __init__ de ambas clases para padres? Mi esfuerzo en el código: class A(object): def __init__(self, a, b): super(A, self).__init__() print(‘Init {} with arguments […]

Conjunto ordenado débil indexable en Python

Me preguntaba si hay una manera fácil de construir un conjunto ordenado débil indexable en Python. Traté de construir uno yo mismo. Esto es lo que se me ocurrió: “”” An indexable, ordered set of objects, which are held by weak reference. “”” from nose.tools import * import blist import weakref class WeakOrderedSet(blist.weaksortedset): “”” A […]

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 […]

propiedades de Python y herencia

Tengo una clase base con una propiedad que (el método de obtención) quiero sobrescribir en la subclase. Mi primer pensamiento fue algo como: class Foo(object): def _get_age(self): return 11 age = property(_get_age) class Bar(Foo): def _get_age(self): return 44 Esto no funciona (la subclase bar.age devuelve 11). Encontré una solución con una expresión lambda que funciona: […]

En Python 3, ¿cómo crear una instancia de clase secundaria usando algo de magia en padre __nuevo__?

Por ejemplo, creando tipos de números personalizados en la siguiente jerarquía Number Complex Real Int Float con lógica en __new__ métodos: class Number: def __new__(cls, value): if isinstance(value, complex): return Complex(value) elif isinstance(value, (int, float)): return Real(value) else: raise TypeError(‘Ну ты и мудак!!!’) def __init__(self, value): self.value = value class Complex(Number): pass class Real(Number): def […]

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) […]

Se necesita el ejemplo de asignador clásico para la herencia de una sola tabla de SqlAlchemy

Encontré un ejemplo de cómo hacer la herencia de una sola tabla usando asignaciones de clase. http://docs.sqlalchemy.org/en/latest/orm/inheritance.html#single-table-inheritance Pero para mi vida, no puedo encontrar un ejemplo de cómo hacer esto con el mapeador clásico para poder mantener separadas mis clases y asignaciones persistentes. ¿Cómo convierto este ejemplo en mapeo clásico? Tengo claro cómo crear las […]

¿Cómo puedo anular una llamada de clase dentro de una clase importada en Python?

Digamos que tengo el siguiente script en modul1 : class IN(object): def __init__(self): pass class C(object): def __init__(self, x): pass def func(self): cl = IN() Entonces quiero usar la clase C dentro de otro script: from modul1 import C class IN(object): def __init__(self): pass class C2(C): def __init__(self, x): C.__init__(self, x) Puedo anular el método […]

Clase Numpy Matrix: atributos de constructor predeterminados para la clase heredada

Quiero implementar mi propia clase de matriz que hereda de la clase de matriz de numpy. el constructor de matriz de numpy requiere un atributo, algo como (“1 2; 3 4′”) . En contraste, mi constructor no debería requerir atributos y debería establecer un atributo predeterminado para el superconstructor. Eso fue lo que hice: import […]