¿Existe alguna magia que pueda usar en Python para usar efectivamente el súper constructor simplemente agregando algunos argumentos adicionales? Idealmente me gustaría usar algo como: class ZipArchive(zipfile.ZipFile): def __init__(self, verbose=True, **kwargs): “”” Constructor with some extra params. For other params see: zipfile.ZipFile “”” self.verbose = verbose super(ZipArchive, self).__init__(**kwargs) Y luego ser capaz de usar los […]
Tengo una función que devuelve instancias de la clase Parent: def generateParent(): do_stuff return Parent(some_parameters) Ahora quiero iniciar una subclase de Padre con los resultados de una llamada a generateParent() : class Child(Parent): def __new__(): return generateParent(some_other_parameters) El problema es que cuando anulo algunos métodos de Parent in Child y luego los llamo en instancias […]
Tenemos alguna funcionalidad particular implementada como una clase de Python, para que nuestros desarrolladores la puedan extender fácilmente. Cada clase tiene una clase Config interna con una lista de elementos. La clase base tiene una clase Config vacía, y cada clase heredada define algunos elementos en ella. Luego, pylint se queja cada vez que se […]
Subclasificar un dict Python funciona como se espera: >>> class DictSub(dict): … def __init__(self): … self[1] = 10 … >>> DictSub() {1: 10} Sin embargo, hacer lo mismo con collections.OrderedDict no funciona: >>> import collections >>> class OrdDictSub(collections.OrderedDict): … def __init__(self): … self[1] = 10 … >>> OrdDictSub() (…) AttributeError: ‘OrdDictSub’ object has no attribute […]
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): […]
Estoy jugando con la herencia de Python Class y me encontré con un problema donde el __init__ heredado no se está ejecutando si se llama desde la subclase (código siguiente) el resultado que obtengo de Python activo es: >>> start Tom Sneed Sue Ann Traceback (most recent call last): File “C:\Python26\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py”, line 312, in RunScript […]
Digamos que tengo class , que usa alguna funcionalidad de dict . Solía componer un objeto dict dentro y proporcionar algo de acceso desde el exterior, pero recientemente pensé en simplemente heredar dict y agregar algunos atributos y métodos que podría requerir. ¿Es una buena manera de ir, o debo atenerme a la composición?
Digamos que tengo class Super(): def method1(): pass class Sub(Super): def method1(param1, param2, param3): stuff ¿Es esto correcto? ¿Las llamadas a method1 siempre irán a la subclase? Mi plan es tener 2 subclases por cada método de reemplazo1 con diferentes parámetros
Tengo la Family y sus clases de Person heredada. ¿Cómo obtengo el atributo familyName de la clase Person ? class Family(object): def __init__(self, familyName): self.familyName = familyName class Person(Family): def __init__(self, personName): self.personName = personName Por ejemplo, deje que estos objetos Family y Person : strauss = Family(‘Strauss’) johaness = Person(‘Johaness’) richard = Person(‘Richard’) Me […]
En el tutorial de Python se dice que ” Python admite una forma limitada de herencia múltiple “. ¿Cuáles son las limitaciones?