Articles of oop

Iterar sobre las subclases de una clase dada en un módulo dado

En Python, dado un módulo X y una clase Y, ¿cómo puedo iterar o generar una lista de todas las subclases de Y que existen en el módulo X?

Constructores múltiples en python, usando herencia.

Tengo una clase AbstractDataHandle, con su método init , y un clasificador de clase. Me gustaría tener dos constructores en Classifier, como Java. Una heredada de su superclase, y una nueva. Sería algo como (pero tengo la intención de “mantener” a los dos constructores): class AbstractDataHandle(): def __init__(self, elements, attributes, labels): self._load(elements, attributes, labels) class […]

¿Cuál es el propósito de verificar si mismo .__ clase__? – python

¿Cuál es el propósito de verificar si self.__class__ ? He encontrado algún código que crea una clase de interfaz abstracta y luego verifica si su self.__class__ es, por ejemplo, class abstract1 (object): def __init__(self): if self.__class__ == abstract1: raise NotImplementedError(“Interfaces can’t be instantiated”) Cuál es el propósito de eso? ¿Es para comprobar si la clase […]

¿Qué partes de un virtualenv necesitan ser cambiadas para reubicarlo?

Entonces, tengo un progtwig Python con un número ridículo de complementos / paquetes. Me gustaría poder distribuir el progtwig en su virtualenv, para que los paquetes se incluyan. Sin embargo, el progtwig es para Windows, y la característica “reubicable” de virtualenvs no es compatible con Windows (además de ser experimental). Por lo tanto, estoy viendo […]

¿Auto .__ dict __. Actualizar (** kwargs) es bueno o pobre?

En Python, digamos que tengo alguna clase, Circle, que se hereda de Shape. La forma necesita coordenadas x e y, además, el círculo necesita un radio. Quiero poder inicializar Circle haciendo algo como: c = Circle(x=1., y=5., r=3.) El círculo hereda de la forma, así que necesito usar argumentos con nombre para __init__ , porque […]

En Python, ¿cuándo son dos objetos iguales?

Parece que 2 is 2 y 3 is 3 siempre será cierto en python, y en general, cualquier referencia a un entero es igual a cualquier otra referencia al mismo entero. Lo mismo sucede con None (es decir, None is None ). Sé que esto no le sucede a los tipos definidos por el usuario, […]

Cómo registrar automáticamente una clase cuando está definida

Quiero tener una instancia de clase registrada cuando se define la clase. Lo ideal sería que el siguiente código hiciera el truco. registry = {} def register( cls ): registry[cls.__name__] = cls() #problem here return cls @register class MyClass( Base ): def __init__(self): super( MyClass, self ).__init__() Desafortunadamente, este código genera el error NameError: global […]

¿Puede una simple diferencia en los nombres de variables de Python3 alterar la forma en que se ejecuta el código?

Este código … class Person: num_of_people = 0 def __init__(self, name): self.name = name Person.num_of_people += 1 def __del__(self): Person.num_of_people -= 1 def __str__(self): return ‘Hello, my name is ‘ + self.name cb = Person(‘Corey’) kb = Person(‘Katie’) v = Person(‘Val’) Produce el siguiente error … Exception AttributeError: “‘NoneType’ object has no attribute ‘num_of_people'” in […]

Cómo medir el tiempo de ejecución de funciones (automáticamente) en Python

Necesito tener una clase base que usaré para heredar otras clases que me gustaría medir el tiempo de ejecución de sus funciones. Así que en lugar de tener algo como esto: class Worker(): def doSomething(self): start = time.time() … do something elapsed = (time.time() – start) print “doSomething() took “, elapsed, ” time to finish” […]

¿Cómo puedo obtener mediante progtwigción la longitud máxima de un campo de modelo de Django?

Digamos que tengo una clase de Django algo como esto: class Person(models.Model): name = models.CharField(max_length=50) # … ¿Cómo puedo obtener programáticamente el valor de max_length para el campo de name ?