La reflexión en Python es mucho más fácil y flexible que en Java.
Recomiendo leer este tutorial
No hay una función directa (que yo sepa) que toma un nombre de clase totalmente calificado y devuelve la clase, sin embargo, tiene todas las piezas necesarias para construir eso y puede conectarlas.
Sin embargo, un pequeño consejo: no intente programar en estilo Java cuando esté en Python.
Si puede explicar qué es lo que está tratando de hacer, tal vez podamos ayudarlo a encontrar una forma más pitónica de hacerlo.
Aquí hay una función que hace lo que quieres:
def get_class( kls ):
parts = kls.split('.')
module = ".".join(parts[:-1])
m = __import__( module )
for comp in parts[1:]:
m = getattr(m, comp)
return m
Puede utilizar el valor de retorno de esta función como si fuera la propia clase.
Aquí tienes un ejemplo de uso:
>>> D = get_class("datetime.datetime")
>>> D
<type 'datetime.datetime'>
>>> D.now()
datetime.datetime(2009, 1, 17, 2, 15, 58, 883000)
>>> a = D( 2010, 4, 22 )
>>> a
datetime.datetime(2010, 4, 22, 0, 0)
>>>
¿Cómo funciona?
Estamos usando __import__para importar el módulo que contiene la clase, lo que requería que primero extrajáramos el nombre del módulo del nombre completo. Luego importamos el módulo:
m = __import__( module )
En este caso, msolo hará referencia al módulo de nivel superior,
Por ejemplo, si su clase vive en el foo.bazmódulo, entonces mserá el módulo. foo
Podemos obtener fácilmente una referencia para foo.bazusargetattr( m, 'baz' )
Para pasar del módulo de nivel superior a la clase, debe usar de forma recursiva gettatren las partes del nombre de la clase
Digamos, por ejemplo, si el nombre de su clase es, foo.baz.bar.Modelentonces hacemos esto:
m = __import__( "foo.baz.bar" ) #m is package foo
m = getattr( m, "baz" ) #m is package baz
m = getattr( m, "bar" ) #m is module bar
m = getattr( m, "Model" ) #m is class Model
Esto es lo que está sucediendo en este bucle:
for comp in parts[1:]:
m = getattr(m, comp)
Al final del ciclo, mhabrá una referencia a la clase. Esto significa que en mrealidad es la clase en sí misma, puede hacer, por ejemplo:
a = m() #instantiate a new instance of the class
b = m( arg1, arg2 ) # pass arguments to the constructor
importlib.import, que se exportó de python 3 a 2.7 ( docs.python.org/2/library/importlib.html )