Vous n'êtes pas identifié(e).
Bonjour tout le monde,
J'analyse le code d'une application que je dois modifier.
Je suis de plus en plus à l'aise avec ce code, mais là, je coince.
class SubclassingQuerySet(QuerySet):
def __getitem__(self, k):
result = super(SubclassingQuerySet, self).__getitem__(k)
if isinstance(result, models.Model) :
return result.as_event_class()
else :
return result
def __iter__(self):
for item in super(SubclassingQuerySet, self).__iter__():
yield item.as_event_class()
def get(self, *args, **kwargs):
result = super(SubclassingQuerySet, self).get(*args, **kwargs)
if (result.__class__== Event):
return result.as_event_class()
else:
return result
Je ne comprends pas plusieurs choses.
On hérite de QuerySet ?
Sauriez-vous m'expliquer à quoi set __getitem__, __iter__, super() ?
À quoi sert cette classe exactement ?
Merci d'avance pour l'aide.
Hors ligne
> Je ne comprends pas plusieurs choses.
>
> On hérite de QuerySet ?
Oui.
Comme pour tes modèles, qui héritent de models.Model
Même syntaxe.
>
> Sauriez-vous m'expliquer à quoi set __getitem__, __iter__, super() ?
Django c'est du Python.
http://docs.python.org/library/operator.html#operator.getitem
http://docs.python.org/reference/datamodel.html#object.__iter__
http://docs.python.org/library/functions.html#super
>
> À quoi sert cette classe exactement ?
>
Quand tu te seras un peu mieux fait les dents sur la programmation
objet, je pense que tu comprendras à quoi elle sert...
(ça peut paraître abrupt, comme réponse, mais comprendre les
mécanismes de Python avant de se lancer dans Django, c'est un pas
vraiment important. Plus tu seras à l'aise dans le premier, plus tu
seras à l'aise dans le second).
Bon courage.
--
No'
http://jehaisleprintemps.net
Hors ligne
surtout bien lire la phrase de Bruno: "c'est UN pas vraiment important" (si
on oublie le "un", la phrase change de sens)
My 2 cents
Mathieu
Le 19 janvier 2011 15:54, Bruno Bord <mlbrunobord _AT_ gmail.com> a écrit :
> > Je ne comprends pas plusieurs choses.
> >
> > On hérite de QuerySet ?
>
> Oui.
> Comme pour tes modèles, qui héritent de models.Model
> Même syntaxe.
>
> >
> > Sauriez-vous m'expliquer à quoi set __getitem__, __iter__, super() ?
>
> Django c'est du Python.
> http://docs.python.org/library/operator.html#operator.getitem
> http://docs.python.org/reference/datamodel.html#object.__iter__
> http://docs.python.org/library/functions.html#super
>
> >
> > À quoi sert cette classe exactement ?
> >
>
> Quand tu te seras un peu mieux fait les dents sur la programmation
> objet, je pense que tu comprendras à quoi elle sert...
>
> (ça peut paraître abrupt, comme réponse, mais comprendre les
> mécanismes de Python avant de se lancer dans Django, c'est un pas
> vraiment important. Plus tu seras à l'aise dans le premier, plus tu
> seras à l'aise dans le second).
>
> Bon courage.
>
> --
> No'
> http://jehaisleprintemps.net
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
Hors ligne
Bonsoir,
-La méthode __iter__ permet d'effectuer des:
for element in mavaraible:
-La méthode __getitem__ permet d'effectuer des:
mavariable[index]
Donc elle attend au moins un paramètre (en plus du <self>).
Voici un TOUT petit exemple.
class Test:
def __getitem__(self,index):
return "Item geted!"
def __iter__(self):
return iter(range(10))
et on a:
>>> me = Test()
>>> me[1]
'Item geted!'
>>> me["hello world!"]
'Item geted!'
>>> for val in me:
print val
0
1
2
3
4
5
6
7
8
9
@ plus
Hors ligne
On hérite de QuerySet ?
À quoi sert cette classe exactement ?
oui, qui est un objet specifique à Django en général utilisé pour renvoyer des données de l'ORM, après un QUERY donc
http://docs.djangoproject.com/en/dev/re … querysets/
le gars voulait donc modifier le comportement normal de cet objet, pour que ça soit plus pratique pour lui j'imagine
Sauriez-vous m'expliquer à quoi set __getitem__, __iter__, super() ?
Afranck a expliqué ça très bien
dès que des méthodes commencent avec un double underscore __ c'est qu'elles sont utilisées en "interne" par l'objet, dans d'autres méthodes
pas interdites donc, mais pouvant evoluer dans le futur, donc pas dans la documentation.
Ce que je ne comprends pas c'est le "as_event_class()", inconnu chez Google qui ne renvoie qu'un snippet avec ce code justement...
Hors ligne
Re,
Il se trouve en fait que la méthode "as_event_class" n'est pas <django-made>. Elle est définie par le codeur. (Vérification effectuée en faisant la recherche dans la version 1.2.4).
Hors ligne