Articles of espacios de nombres de

¿Poniendo paquetes de python separados en el mismo espacio de nombres?

Estoy desarrollando un marco de Python que tendría “complementos” escritos como paquetes separados. Es decir: import myframework from myframework.addons import foo, bar Ahora, lo que estoy tratando de organizar es para que estos complementos puedan distribuirse por separado del marco central e inyectarse en el espacio de nombres myframework.addons . Actualmente mi mejor solución para […]

Anular clases usadas en la clase padre

Supongamos que hay una clase NiceClass usa alguna otra clase LesserClass en un lugar que no puedo editar # NiceClass.py class LesserClass: … # stuff … class NiceClass: … # Lots of use of lesser class in here… … Ahora quiero usar mi propia clase MyLesserClass lugar de MyLesserClass en todas partes en una versión […]

Variable sin nombre y nombre

Sigue el python reference manual que tenemos. Cuando no se encuentra ningún nombre, se genera una excepción NameError. Si el nombre hace referencia a una variable local que no se ha vinculado, se genera una excepción UnboundLocalError. UnboundLocalError es una subclase de NameError. No entiendo cuándo se produjo UnboundLocalError ? Porque Python carece de declaraciones […]

¿Por qué los módulos se importan como _ en otro módulo?

Hay varios casos en la biblioteca estándar de Python donde los módulos se importan con un guión bajo ( _ ) en su nombre. Me pregunto por qué esto es necesario, ya que está bajo el nombre del módulo de todos modos y from … import * respetará la variable __all__ para lo que se […]

Python: es posible llamar a un método estático desde dentro de la clase sin calificar el nombre

Esto es molesto: class MyClass: @staticmethod def foo(): print “hi” @staticmethod def bar(): MyClass.foo() ¿Hay alguna manera de hacer que esto funcione sin nombrar a MyClass en la llamada? es decir, ¿puedo decir foo() en la última línea?

Acceso al espacio de nombres del módulo de llamada.

Sé que esto es algo que uno normalmente no debería hacer, y conozco las razones para ello. Sin embargo, estoy realizando una función de depuración dentro de una clase que debería mostrar cierta información sobre el módulo que la llamó. Necesito saber cómo subir un nivel en el espacio de nombres para encontrar una variable […]

Estilo de código: “aplanar” el espacio de nombres de un paquete

Mi jerarquía de paquetes: InstrumentController/ __init__.py instruments/ __init__.py _BaseInstrument.py Keithley2000.py # etc… El contenido de los archivos del instrumento: # _BaseInstrument.py class _BaseInstrument(object): “””Base class for instruments””” # etc… # Keithley2000.py from InstrumentController.instruments._BaseInstrument import _BaseInstrument class Keithley2000(_BaseInstrument): # etc… Quiero que mis usuarios puedan acceder a las clases sin tener que profundizar en una jerarquía […]

Entendiendo la inseguridad de Python Pickle

En la documentación de Python se indica que el pickle no es seguro y no debe analizar las entradas de los usuarios que no son de confianza. Si investigas esto; casi todos los ejemplos demuestran esto con una llamada a system() a través de os.system . Lo que no me queda claro es cómo se […]

¿Para qué sirve la variable de nivel de módulo Python __all__?

Lo he visto mucho en el código fuente de Python / Lib pero no sé para qué sirve. Pensé que se usaba para limitar miembros accesibles de un módulo. Entonces solo los elementos en __all__ se mostrarán cuando dir(module) . Hice un pequeño ejemplo y vi que no funcionaba como esperaba. Entonces … ¿Para qué […]

¿Cómo decirle a lxml.etree.tostring (elemento) que no escriba espacios de nombres en python?

Tengo un enorme archivo xml (1 Gig). Quiero mover algunos de los elementos (entradas) a otro archivo con el mismo encabezado y especificaciones. Digamos que el archivo original contiene esta entrada con la etiqueta : … some text … … … Uso lxml.etree.iterparse para iterar a través del archivo. Funciona bien. Cuando encuentro el elemento […]