Nos cuesta un poco entender la pregunta así formulada. Aunque sea sobre caramelos, la pregunta nos la tienes que dar un poco masticada. Porqué sino la respuesta podría ser difícil de digerir:<br><br>class Caramelo(object):<br>
    _count = {}<br><br>    def __new__(cls):<br>        if cls in Caramelo._count:<br>            Caramelo._count[cls] += 1<br>        else:<br>            Caramelo._count[cls] = 1<br>        return object.__new__(cls)<br>
<br>    @classmethod<br>    def count(cls):<br>        if cls in Caramelo._count:<br>            return Caramelo._count[cls]<br>        else:<br>            return 0<br><br>    def __mul__(self, other):<br>        Caramelo._count[self.__class__] += other - 1<br>
        return self<br><br>    def __rmul__(self, other):<br>        return self.__mul__(other)<br><br>    def __lmul__(self, other):<br>        return self.__mul__(other)<br><br>class RegalizRojo(Caramelo):<br>    pass<br>
<br>class RegalizNegro(Caramelo):<br>    pass<br><br>bolsa_a = [RegalizRojo(), RegalizRojo(), 2 * RegalizNegro()]<br>bolsa_b = [4 * RegalizRojo(), RegalizNegro()]<br><br>print RegalizRojo.count(), RegalizNegro.count()<br clear="all">
<br>-----<br>Pau<br><br>Python..., what else?<br>
<br><br><div class="gmail_quote">2011/1/13 lasizoillo <span dir="ltr">&lt;<a href="mailto:lasizoillo@gmail.com">lasizoillo@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
El día 13 de enero de 2011 16:57, pixu kideak &lt;<a href="mailto:pixukideak@gmail.com">pixukideak@gmail.com</a>&gt; escribió:<br>
<div class="im">&gt; Bueno pues para resolver el problema había pensado lo siguiente:<br>
&gt; Contar en memoria con todos los datos ( todas las bolsas existentes y éstas<br>
&gt; con los caramelos que contienen y sus cantidades )<br>
&gt; Recorrer secuencialmente todas las bolsas viendo si tienen el caramelo que<br>
&gt; me interesa. En caso afirmativo contabilizar esa cantidad en el contador y<br>
&gt; así hasta recorrer todas las bolsas.<br>
&gt; Simplemente quería saber si existía alguna forma &quot;divina&quot; pero viendo que<br>
&gt; las Bolsas no guardan ninguna lógica en su composición; creo que toca<br>
&gt; recorrerlas todas viendo si contienen el caramelo o no :-)<br>
&gt; Saludos y gracias ;-)<br>
<br>
</div>Vale, ahora entiendo el problema ;-)<br>
<br>
Si que hay solución y por supuesto no es nada divina. En algunos casos<br>
será mejor y en otros peor. Puedes mantener una especie de inventario<br>
de todos los caramelos. Bastaría con un diccionario en el que la clave<br>
es el caramelo y el valor el número de unidades en las bolsas<br>
registradas.<br>
<br>
Ese dato se puede ir llenando cada vez que registras una bolsa de<br>
caramelo. Pero también deberías actualizarlo al eliminar bolsas de<br>
caramelos. Por lo cual, estas haciendo más trabajo cada vez que dás de<br>
alta/baja una bolsa de caramelos y los contadores de cada tipo de<br>
caramelo ocupan espacio (no creo que importe mucho, pero hay que ser<br>
precisos). La ventaja es que se podrían hacer las consultas de los<br>
caramelos en O(1).<br>
<br>
Saludos:<br>
<br>
Javi<br>
<div><div></div><div class="h5"><br>
&gt;<br>
&gt; 2011/1/13 lasizoillo &lt;<a href="mailto:lasizoillo@gmail.com">lasizoillo@gmail.com</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt; El día 13 de enero de 2011 13:38, pixu kideak &lt;<a href="mailto:pixukideak@gmail.com">pixukideak@gmail.com</a>&gt;<br>
&gt;&gt; escribió:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Me han planteado un problemilla para realizarlo con Python pero no tengo<br>
&gt;&gt; &gt; muy<br>
&gt;&gt; &gt; claro por dónde atacar para resolverlo de manera eficiente.<br>
&gt;&gt;<br>
&gt;&gt; Sería un buen punto de partida la forma ineficiente por dos motivos:<br>
&gt;&gt;  * El primero porque muestras que te has esforzado en intentarlo y<br>
&gt;&gt; tienes afán de superación en vez de más cara que espalda como muestran<br>
&gt;&gt; algunos que quieren que les hagan los deberes.<br>
&gt;&gt;<br>
&gt;&gt; &gt; El problema es el siguiente:<br>
&gt;&gt; &gt; &quot;Tengo distintas bolsas de caramelos, cada bolsa digamos que tiene un<br>
&gt;&gt; &gt; nombre; (BolsaA, BolsaB ... )y cada bolsa se compone de caramelos<br>
&gt;&gt; &gt; diferentes<br>
&gt;&gt; &gt; (RegalizRojo, RegalizNegro, Chicle,Tiburón ...).<br>
&gt;&gt; &gt; &quot;El tipo de caramelo puede estar tanto en un modelo de bolsa cómo en<br>
&gt;&gt; &gt; otra&quot;<br>
&gt;&gt; &gt; Lo que deseo realizar es, que el usuario pueda introducir cualquier tipo<br>
&gt;&gt; &gt; de<br>
&gt;&gt; &gt; caramelo y le muestre todas las unidades que se necesitan de ese tipo.<br>
&gt;&gt;<br>
&gt;&gt;  * El segundo porque la redacción en lenguaje natural no compila en<br>
&gt;&gt; nuestras mentes. Seguramente un código ineficiente nos ayudaría a<br>
&gt;&gt; comprender el enunciado del problema. Unos tests o casos de prueba<br>
&gt;&gt; serían maravillosos. Ahora mismo las unidades que responden a la gran<br>
&gt;&gt; pregunta, creo que son 42. Lo que no se es cual es la gran pregunta de<br>
&gt;&gt; la vida, el universo y todo lo demás (incluyendo este problema ;-)<br>
&gt;&gt;<br>
&gt;&gt; Saludos:<br>
&gt;&gt;<br>
&gt;&gt; Javi<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Python-es mailing list<br>
&gt;&gt; <a href="mailto:Python-es@python.org">Python-es@python.org</a><br>
&gt;&gt; <a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
&gt;&gt; FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Python-es mailing list<br>
&gt; <a href="mailto:Python-es@python.org">Python-es@python.org</a><br>
&gt; <a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
&gt; FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
&gt;<br>
&gt;<br>
_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org">Python-es@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
</div></div></blockquote></div><br>