Articles of herencia de

Elegir dinámicamente la clase para heredar de

Mi conocimiento de Python es limitado, necesito ayuda en la siguiente situación. Supongamos que tengo dos clases A y B , ¿es posible hacer algo como lo siguiente (conceptualmente) en Python: import os if os.name == ‘nt’: class newClass(A): # class body else: class newClass(B): # class body Entonces, el problema es que me gustaría […]

El error al llamar a las bases de metaclase: función () el argumento 1 debe ser código, no str

Intenté subordenar subprocesos. Condición anterior hoy, pero no funcionó. Aquí está la salida del intérprete de Python cuando bash subclasificar la clase threading.Condition: >>> import threading >>> class ThisWontWork(threading.Condition): … pass … Traceback (most recent call last): File “”, line 1, in TypeError: Error when calling the metaclass bases function() argument 1 must be code, […]

TypeError: Super no toma argumentos de palabras clave?

Primero, aquí está mi código: class Enemy(): def __init__(self, name, hp, damage): self.name = name self.hp = hp self.damage = damage def is_alive(self): “””Checks if alive””” return self.hp > 0 class WildBoar(Enemy): def __init__(self): super(WildBoar, name=”Wild Boar”, hp=10, damage=2).__init__() class Marauder(Enemy): def __init__(self): super(Marauder, name=”Marauder”, hp=20, damage=5).__init__() class Kidnappers(Enemy): def __init__(self): super(Kidnappers, name=”The Kidnappers”, hp=30, […]

Entendiendo la metaclase y la herencia en Python

Tengo alguna confusión con respecto a las meta-clases. Con herencia class AttributeInitType(object): def __init__(self,**kwargs): for name, value in kwargs.items(): setattr(self, name, value) class Car(AttributeInitType): def __init__(self,**kwargs): super(Car, self).__init__(**kwargs) @property def description(self): return “%s %s %s %s” % (self.color, self.year, self.make, self.model) c = Car(make=’Toyota’, model=’Prius’, year=2005, color=’green’) print c.description Con meta clase class AttributeInitType(type): def […]

Cómo extender la clase de Python.

He creado una clase base: class Thing(): def __init__(self, name): self.name = name Quiero extender la clase y agregar al método init para que SubThing tenga un name y una propiedad de time . ¿Cómo lo hago? class SubThing(Thing): # something here to extend the init and add a “time” property def __repr__(self): return ” […]

¿Cómo proporcionar inicialización adicional para una subclase de namedtuple?

Supongamos que tengo un namedtuple como este: EdgeBase = namedtuple(“EdgeBase”, “left, right”) Quiero implementar una función hash personalizada para esto, así que creo la siguiente subclase: class Edge(EdgeBase): def __hash__(self): return hash(self.left) * hash(self.right) Como el objeto es inmutable, quiero que el valor de hash se calcule solo una vez, así que hago esto: class […]

Use el método de clase heredado dentro de __init__

Tengo una clase para padres que es heredada por varios hijos. Me gustaría inicializar uno de los hijos utilizando los inicializadores @classmethod los padres. ¿Cómo puedo hacer esto? Lo intenté: class Point(object): def __init__(self,x,y): self.x = x self.y = y @classmethod def from_mag_angle(cls,mag,angle): x = mag*cos(angle) y = mag*sin(angle) return cls(x=x,y=y) class PointOnUnitCircle(Point): def __init__(self,angle): […]

La diferencia entre super (). Method () versus super (self .__ class __, self) .method ()

Aquí está el código que estaba tratando de escribir: class A(object): def bind_foo(self): old_foo = self.foo def new_foo(): old_foo() #super().foo() super(self.__class__,self).foo() self.foo = new_foo def __init__(self): print(“A __init__”) def foo(self): print(“A foo”) class B(A): def __init__(self): print(“B __init__”) super().__init__() def foo(self): print(“B foo”) super().foo() class C(A): def __init__(self): print(“C __init__”) super().__init__() super().bind_foo() def foo(self): print(“C […]

Herencia de la clase Python: AttributeError: el objeto ” no tiene atributo ‘xxx’

Tengo la siguiente clase base y subclase: class Event(object): def __init__(self, sr1=None, foobar=None): self.sr1 = sr1 self.foobar = foobar self.state = STATE_NON_EVENT # Event class wrappers to provide syntatic sugar class TypeTwoEvent(Event): def __init__(self, level=None): self.sr1 = level self.state = STATE_EVENT_TWO Más adelante en mi código, estoy inspeccionando una instancia de una clase TypeTwoEvent , […]

Python: cómo copiar todos los atributos de la clase base a uno derivado

Quiero lograr lo siguiente: #!/usr/bin/python class SuperHero(object): def setName(self, name): self.name = name def getName(self): return self.name class SuperMan(SuperHero): pass if __name__ == “__main__”: sh = SuperHero() sh.setName(“Clark Kent”) sm = SuperMan(sh) # This does *not* work in real python print sm.getName() # prints “Clark Kent” ¿Tengo que copiar los atributos uno por uno o […]