Merci pour les reponses . La question [3] assez "stupide" car ca n'a rien a
voir de polymorphisme . Une erreur de ma part (Crois que le serpent m'a
mordu) . Merci pour tout et bonne soiree

2012/4/6 Alioune Dia <[email protected]>

> Lut KOUKA
> Ben je pense que mon exemple précédent n'es pas pertinent car en fait je
> n'ai pas besoin de faire ca:
> i
>
> ``Python``
> class A(object):
>       def __init__(self, fisrt =""):
>       self.first = 'Dia'
>       def __iter__(self):
>           while True:
>              yield 1
> Je peux tout simplement faire
> class A(object):
>
>       first = 'Dia'
>       def __iter__(self):
>           while True:
>              yield 1
> ``
> Et dans ce cas même si on initialise pas A dans la sous class B on peut
> quand bien faire -b.first-
> et dans ce cas b.first  donne  'Dia' et on ne génère pas d'erreur .En
> conclusion mon premier exemple
> n'a rien de pertinent.Par contre en googlant un peu dans python , il
> semble que Guido van Russum a mis en place __new__ pour permettre aux
> programmeur de sub classer les immutable types.
>
>
> >>> class Foo(tuple):
> ...       def __init__(self, a, b):
> ...           super(Foo,self).__init___(tuple(b))
> ...
> >>> Foo(None, [3,4])
>
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: tuple() takes at most 1 argument (2 given)
>
> Ici j'ai bien redéfini  Foo avec deux attributs (a et b) ,mais malgré cela
> python refuse car on ne peut
> correctement sub classer un type immutable que avec __new__
> >>> class Foo2(tuple):
> ...       def __new__(cls , a, b):
> ...           return tuple.__new__(cls,b)
> ...
> >>> Foo2(None , [3, 4])
> (3, 4)
> >>>
> C'est la vraie réponse a ta première question, tout ce que j'ai pu
> raconter avant sont des bobards d'un
> gas qui fait semblant de connaitre et qui mélange tout :) .j’espère qu'on
> pourras de voir
> dans les Ateliers du Lugs, je pense que il y 'en aura tout le mois, car tu
> me semble être quelqu’un
> de bon
> --Ad
>
>
>
>
>
> Le 6 avril 2012 18:24, Alioune Dia <[email protected]> a écrit :
>
> Bonjour
>> un singleton est certes un cas possible et le plus évident , mais
>> n'oublie pas
>> que si tu utilise __init__, tu ne peux pas accéder aux attributs de la
>> __super__ class
>> sans l'avoir initialiser  super(SubClass,self).__init__ , alors que en
>> utiliser __new__
>> c'est une instance perisItante que tu retourne et partagé et tous ces
>> attributs sont accessibles au
>> niveau des sous class.
>>
>>
>> ``Python``
>> class A(object):
>>       def __init__(self, fisrt =""):
>>       self.first = 'Dia'
>>       def __iter__(self):
>>           while True:
>>              yield 1
>> class B(A):
>>       def __init__(self,last = ""):
>>       self.last  = 'Alioune'
>> b= B()
>> print b.last
>> print b.first
>> # Output
>> Alioune
>> Traceback (most recent call last):
>>   File "test.py", line 16, in <module>
>>     print b.first
>> AttributeError: 'B' object has no attribute 'first'
>>
>> ``python``
>> Ici tu ne peux pas accéder a b.first car tu n'as pas initialiser la class
>> A. Alors que le fait
>> d’utiliser le constructeur de class (__new__) t'aurai sans doute permis
>> d'y accéder sans même
>> avoir besoin d'instancier la __super__ class A.
>>
>> ``Python``
>> class A(object):
>>       def __new__(cls, *args , **kwargs):
>>           obj = object.__new__(cls, *args, **kwargs)
>>           obj.first = 'Dia'
>>           return obj
>>
>>       def __iter__(self):
>>           while True:
>>              yield 1
>> class B(A):
>>       def __init__(self,last = ""):
>>       self.last  = 'Alioune'
>>
>> b= B()
>> print b.last
>> print b.first
>>
>> #Output
>> Alioune
>> Dia
>> ``Python``
>>
>> [2]
>> La sortie d'une routine met fin à la routine, alors que la sortie de la
>> coroutine peut être
>> le résultat d'une suspension de son traitement jusqu'à ce qu'il lui soit
>> signalé de reprendre son cours
>> Alors pour répondre a ta question tu peux utiliser les -threads- ou même
>> un simple générateur
>>
>> >>> s = 'abc'
>> >>> it = iter(s)
>> >>> it
>> <iterator object at 0x00A1DB50>
>> >>> it.next()
>> 'a'
>> >>> it.next()
>> 'b'
>> >>> it.next()
>> 'c'
>> >>> it.next()
>>
>> Comme tu peux voir  a chaque fois que l'on fait appel a it.next, le
>> générateur a garder l’état de
>> l'index.Tu peux utiliser des threads également et moi je préfère et avec
>> -lock_aquire- et lock_release
>> tu peux faire communiquer plusieurs processus en parallèles .Voici un
>> code que j'ai écris  in y' a
>> quelques temps sur les threads communicants(
>>
>> https://github.com/aliounedia/django_tools/blob/master/canal/bin/job_thread_runner.py
>> )
>>
>>
>> [3]
>>
>> Sous python le polymorphisme est claire, je ne comprends pas ta question
>> , peux tu être
>> plus précis.
>>
>>
>> --Ad
>>
>> Le 6 avril 2012 16:04, Josué Brunel KOUKA <[email protected]> a
>> écrit :
>>
>>> Salut ! Voila , je suis un tout "jeune" (Debutant) charmeur de serpents
>>> (#PYTHON), et en ce moment j'ai pas mal de questions qui trottent dans ma
>>> tete . Beaucoup de zones d'ombres .
>>>
>>> [1]- Quel serait l'utilite de __new__ compare a __init__ . Sachant que
>>> __new__ (Constructor) est lie a la création de classe et que __init__
>>> plutot a l'initialisation . Je cherche un cas  pertinent . Pour l'instant
>>> je ne vois que son utilise dans le cas de l’implémentation d'un Singleton
>>> et j'aimerai bien découvrir de nouveau cas .
>>>
>>> [2]- Comment puis je coder une Coroutine en pyhon ?
>>>
>>> [3]- Est ce que le DuckTyping serait l'une des raisons qui fait a ce que
>>> la notion de "polymorphisme" en python soit pas tres explicite ? (Je peux
>>> me gourer grave la , fais une etude sur le DuckTyping , so .... )
>>>
>>> Merci (tutututtuu) #bruit de flute
>>>
>>> --
>>> Josue Brunel
>>>
>>>
>>>
>>>
>>> --
>>> Ce message a été envoyé à la liste [email protected]
>>> Gestion de votre abonnement : http://dakarlug.org/liste
>>> Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug
>>> Le site du DakarLUG : http://dakarlug.org
>>>
>>
>>
>
>
> --
> Ce message a été envoyé à la liste [email protected]
> Gestion de votre abonnement : http://dakarlug.org/liste
> Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug
> Le site du DakarLUG : http://dakarlug.org
>



-- 
Josue Brunel
--
Ce message a été envoyé à la liste [email protected]
Gestion de votre abonnement : http://dakarlug.org/liste
Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug
Le site du DakarLUG : http://dakarlug.org

Répondre à