Articles of python datamodel

Evitar la creación de nuevos atributos fuera de __init__

Quiero poder crear una clase (en Python) que una vez inicializada con __init__ , no acepta nuevos atributos, pero acepta modificaciones de los atributos existentes. Hay varias formas de piratear que puedo ver para hacer esto, por ejemplo, tener un método __setattr__ como def __setattr__(self, attribute, value): if not attribute in self.__dict__: print “Cannot set […]

¿Cómo realizo la introspección en un objeto en Python 2.x?

Estoy usando Python 2.x y tengo un objeto que estoy invocando desde el éter; La documentación al respecto no es particularmente clara. Me gustaría poder obtener una lista de propiedades para ese objeto y el tipo de cada propiedad. Del mismo modo, también me gustaría obtener una lista de métodos para ese objeto, además de […]

¿Cómo determinaría dónde se define cada propiedad y método de una clase de Python?

Dada una instancia de alguna clase en Python, sería útil poder determinar qué línea de código fuente definió cada método y propiedad (por ejemplo, para implementar 1 ). Por ejemplo, dado un módulo ab.py class A(object): z = 1 q = 2 def y(self): pass def x(self): pass class B(A): q = 4 def x(self): […]

Python, ¿debería implementar el operador __ne __ () basado en __eq__?

Tengo una clase en la que quiero anular el __eq__() . Parece tener sentido que yo también deba anular el __ne__() , pero ¿tiene sentido implementar __ne__ basado en __eq__ como tal? class A: def __eq__(self, other): return self.value == other.value def __ne__(self, other): return not self.__eq__(other) ¿O hay algo que me falta en la […]

Operador multiplicado aplicado a la lista (estructura de datos)

Estoy leyendo Cómo pensar como un científico informático que es un texto introductorio para “Progtwigción Python“. Quiero aclarar el comportamiento del operador multiplicar ( * ) cuando se aplica a las listas. Considere la función make_matrix def make_matrix(rows, columns): “”” >>> make_matrix(4, 2) [[0, 0], [0, 0], [0, 0], [0, 0]] >>> m = make_matrix(4, […]

¿Todo es mayor que ninguno?

¿Existe un tipo de datos incorporado en Python, además de None , para el cual: >>> not foo > None True donde foo es un valor de ese tipo? ¿Qué hay de Python 3?

Obtenga el nombre de clase completo de un objeto en Python

Para fines de registro, quiero recuperar el nombre de clase completo de un objeto de Python. (Con la calificación completa, me refiero al nombre de la clase, incluido el paquete y el nombre del módulo). Sé sobre x.__class__.__name__ , pero ¿hay un método simple para obtener el paquete y el módulo?

Python: Implementando el corte en __getitem__

Estoy tratando de implementar la funcionalidad de división para una clase que estoy creando y que crea una representación vectorial. Tengo este código hasta ahora, que creo que implementará correctamente la división, pero cada vez que hago una llamada como v[4] donde v es un vector python, devuelve un error por no tener suficientes parámetros. […]

¿Cómo se implementa la palabra clave ‘is’ en Python?

… is palabra clave que se puede usar para la igualdad en cadenas. >>> s = ‘str’ >>> s is ‘str’ True >>> s is ‘st’ False Intenté ambos __is__() y __eq__() pero no funcionaron. >>> class MyString: … def __init__(self): … self.s = ‘string’ … def __is__(self, s): … return self.s == s … […]

Obtener clase que define el método

¿Cómo puedo obtener la clase que definió un método en Python? Me gustaría que el siguiente ejemplo imprima ” __main__.FooClass “: class FooClass: def foo_method(self): print “foo” class BarClass(FooClass): pass bar = BarClass() print get_class_that_defined_method(bar.foo_method)