Hola,

Me temo que tu código no está haciendo lo que crees. Las expresiones con ==
evaluán la expresión, no asignan valores a variables. Te propongo el
siguiente código basado en el tuyo.

import os,fnmatch

class libro:

    def __init__(self, nombre):
        self.nombre=nombre

    def buscar(self):
        self.foto = False
        os.chdir(r'D:\Django\src\static\imagenes')
        for f in os.listdir():
            if fnmatch.fnmatch(f,'*'+self.nombre+'*.jpg'):
                self.foto = f
                return self.foto

        return self.foto

Si encuentra la coincidencia, asigna el valor y sale del bucle con el
return inmediatamente. En todos los otros casos, devuelve el valor por
defecto que es False. De todas formas, crear un atributo de clase de esta
forma es un poco "meh!" ¿no? Si vas a usar ese atributo más adelante, por
qué no lo creas en el __init__ y lo asignas a False ahí? Y si no vas a
hacerlo, por qué crear un self.foto y no simplemente una variable que
llames "foto"?
Bueno, en cualquier caso el problema era que estabas retornado True o False
al estar evaluando una comparación con el ==, en lugar de asignar un valor
y luego retornarlo.

Pablo

2016-11-21 0:42 GMT+01:00 Gonzalo V <gvm2...@gmail.com>:

> Amigos
> Tengo la siguiente duda. Estoy haciendo una clase para un objeto libro y
> tiene 2 atributos, el primero es el nombre y el segundo una foto que está
> almacenada en una carpeta en mi ordenador.
> Lo que ando buscando es que ese segundo atributo (libro.foto) se llene
> mediante una función que haga el trabajo de buscar el archivo y asignarlo.
> Tengo lista la función pero no asigna.
> ¿Cómo se hace, se puede hacer o qué estoy haciendo mal?
> Desde ya, muy agradecido.
>
> import os,fnmatch
>
> class libro:
>
>     def __init__(self, nombre):
>         self.nombre=nombre
>
>     def buscar(self):
>         os.chdir(r'D:\Django\src\static\imagenes')
>         for f in os.listdir():
>             if fnmatch.fnmatch(f,'*'+self.nombre+'*.jpg'):
>                 return self.foto==f
>             else:
>                 return self.foto==False
>
>
>
>
>
> Saludos,
> Gonzalo
>
> _______________________________________________
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es

Responder a