(1) 2 3 4 »


Bonne conception des classes (vertes, pour les enfants :-D )
OverdOzed
Inscrit:
19/03/2016 16:30
De Belgique
Post(s): 1435
Titre modifié.

Contribution le : 05/03/2018 18:12
_________________
Mon projet jeu vidéo
Mes tutos
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/03/2016 16:30
De Belgique
Post(s): 1435
Bon, après avoir analyser le code plus en détail, j'ai compris pourquoi celui qui a fait ce code a mit un return.

Ce que je trouve incohérent à mon sens car c'est comme si il rangeait un objet dans une petite boite pour ranger celle-ci dans une plus grande.

J'ai pu faire en sorte de ranger dans une grande boite directement mais c'est la boucle for que je ne comprends pas dans cette application:

"Texts" est une liste ou se trouve les variables de position x, y, la police et le texte à afficher.

Je ne comprend pas comment les instructions après "for" parviennent à retrouver leurs éléments respectifs, car il n'y à aucun lien visible, aucune référence.

On dirait que, dans la liste, il y à tout le code de "init", ce qui est incompréhensible. Comme si il y avait un dictionnaire.

Contribution le : 22/03/2018 12:42
_________________
Mon projet jeu vidéo
Mes tutos
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/07/2011 21:39
De Corsica !
Post(s): 1027
Je vois rien d'incompréhensible. Pour moi le code est très clair.
Tout en haut une liste "texts" comme tu l'as dis. Juste en dessous il crée une classe Text qui va contenir tout les attributs que peut recevoir un texte.

Ensuite de ça, en dehors de cette classe Text il ajoute deux fonctions:
Add et Write

-Add va créer un nouveau objet Text et le rajouter à la liste pour garder sa référence d'instance.

-La fonction write maintenant va afficher le texte. Et la boucle for bah ... elle va looper dans tout les éléments de la liste texts. C'est à dire que chaque Text va être parcouru par la boucle. Et pour chaque elle récupère les attributs nécessaires à l'affichage.

Et puis en bas il crée du coup deux Text car la liste est vide à la base, et appel la fonction write pour les afficher.

Clair non ?

Contribution le : 22/03/2018 14:07
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/03/2016 16:30
De Belgique
Post(s): 1435
Ah oui, le code est clair... mais pas son fonctionnement et c'est ce que je cherche à comprendre.

Je viens de faire des tests à l'instant: Premièrement, le "return" ne sert à rien.

Deuxièmement, Je me suis attardé sur le "append": le print ne me dit pas clairement ce à quoi je pense, mais on dirait bien que cela créer une classe dans la liste "texts".

Dans ce cas, le "for" prend tout son sens, car il retrouve les attributs concerné, mit dans une liste...

"Une classe dans une liste": cette phrase me gêne. C'est possible ça ? Serai-ce ce qu'on appelle une métaclasse ?

Ou alors, "le lien" que je prétends ne pas trouver serait créer avec le append...

Contribution le : 22/03/2018 15:40
_________________
Mon projet jeu vidéo
Mes tutos
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/07/2011 21:39
De Corsica !
Post(s): 1027
Citation :

Redstar a écrit:
Je me suis attardé sur le "append": le print ne me dit pas clairement ce à quoi je pense, mais on dirait bien que cela créer une classe dans la liste "texts".


Citation :

-Add va créer un nouveau objet Text et le rajouter à la liste pour garder sa référence d'instance.


Exactement ce que je viens de dire quoi
Bah oui une boucle for ça peut servir à parcourir une list, et il accède a chacune des variables en faisant text.variable.
Stocker des instances de classe dans une liste c'est tout à fait possible, une liste a un type de données. Tu peux faire une liste d'int, de float, de string ... tout comme une liste d'une classe en particulier que tu aurais crée.
C'est ça la POO

Contribution le : 22/03/2018 18:35
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/03/2016 16:30
De Belgique
Post(s): 1435
Comment aurai-je pu savoir que le terme "objet" pour toi voulais dire "classe" ? Je ne suis pas télépathe

Dans python, tout est objets, on est d'accord, mais de là à pouvoir lire une classe créée dynamiquement...

Contribution le : 22/03/2018 19:29
_________________
Mon projet jeu vidéo
Mes tutos
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/07/2011 21:39
De Corsica !
Post(s): 1027
Je pensais que tu était plus calé que ca en code désolé, la prochaine fois je mettrait des traductions
Pas besoin d'être télépathe c'est un mot qui revient souvent d'où le terme programmation orienté objet (POO). Je te suggère de suivre quelques tutos là dessus ça évitera des erreurs d'incompréhension par la suite

Contribution le : 22/03/2018 20:38
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
29/04/2007 20:11
De Nîmes...300 jours de soleil par an, inondations le reste du temps
Post(s): 3774
Citation :
Comment aurai-je pu savoir que le terme "objet" pour toi voulais dire "classe" ? Je ne suis pas télépathe

Hook a utilisé le mot "objet" à bon escient. C'est toi qui as un très gros problème de vocabulaire qu'il va falloir corriger très vite si tu veux comprendre quoi que ce soit à la POO. Je ne suis pas sûr, par exemple, que tu réalises ce que signifie "tout est objet".

Un objet est une brique de programme caractérisée par une identité (deux objets identiques restent séparés, de la même façon que deux jumeaux identiques restent deux personnes séparées), un état (des données) et un comportement (des fonctions, appelées méthodes).

Dans la majorité des langages orientés objet, l'état et le comportement d'un objet sont définis par une classe, dont il est une instance. Une classe déclare les champs et les méthodes possédés par les objets qui l'instancient.

La classe Utilisateur déclare qu'un utilisateur du forum a un nom, un avatar et un mot de passe, et qu'il peut poster_un_message(). DaWaaaaghBabal est une instance de la classe Utilisateur ; son nom est "DaWaaaaghBabal", son avatar est [cf à gauche], son mot de passe est [bien essayé], et il est en train de poster_un_message(ce_message).
DaWaaaaghBabal n'est pas une classe.

Fun fact : En Python, tout est objet. Donc une classe est un objet aussi. Donc une classe est décrite par une classe. Cette classe ? La classe Class. La classe Class déclare des champs comme "champs déclarés par la classe", "méthodes déclarées par la classe", et des méthodes comme "instancier".

Ici, il n'est absolument pas question de créer une classe dynamiquement. On peut le faire et c'est très rigolo, mais dans ce cas précis on fait quelque chose de beaucoup plus banal :

- On définit la classe Text. Elle déclare des états (en Python, pour déclarer un champ, on l'initialise dans le constructeur, d'où peut-être une partie de ta confusion) mais pas de comportement.
Une instance de la classe Text est donc juste un paquet de données qui ne sait rien faire, un texte à afficher et quelques métadonnées genre la couleur ou la police. Ça permet de bien associer un ensemble de paramètres dans une structure de données très simple.

- On définit la méthode add(...) qui crée un objet, une instance de la classe Text, qui empaquète toutes les informations passées en paramètre. Si on ouvre la documentation, on constate que la méthode append() ne renvoie rien, donc même s'il y a un "return", cette méthode ne renvoie rien non plus. On aurait pu se passer du "return".

- On définit une méthode write(), qui initialise tout ce dont on a besoin pour jouer avec BGL, puis affiche tous les textes qu'on a ajoutés précédemment.

Tout ça est donc simplement une façon de stocker des textes au fur et à mesure (via la méthode add()) avant de tous les afficher d'un coup (via write()), comme le montrent les trois dernières lignes du code.

Contribution le : 23/03/2018 01:19
_________________
|C'est en forgeant qu'on devient forgeron, c'est en mouchant qu'on devient moucheron et c'est en sciant que Léonard devint scie.
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/03/2016 16:30
De Belgique
Post(s): 1435
L'important, c'est que tu m'aies décalé, Hook. Merci

Pour ma part, je ne prétendrai jamais l'être, tout simplement parce que il m'a fallu déjà un effort sur moi-même pour appréhender le monde de la programmation.

L'école que j'ai choisie n'a que des enseignants par intérim, donc veuillez m'excuser si j'ai des écarts. Les tutoriels, c'est bien, mais ça remplacera jamais un humain, de mon point de vue.

C'était ce genre de réponse que j'avais besoin, DaWaaaaghBabal, c'est... classe de ta part (pour la description) (gné).

J'ai transformé le code en condition réelle.

Vu que le script sera actualisé plusieurs fois, je dois faire en sorte de lancer une seule fois l'affichage ou à la demande.

J'ai placé la liste que le add fait dans un dictionnaire.

Je me pose une question:
1. Est-ce possible de greffer la classe toto dans Text ou dois-je absolument la garder tel quel (parce que c'est un objet à part entière) ?

Contribution le : 23/03/2018 11:12
_________________
Mon projet jeu vidéo
Mes tutos
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/07/2011 21:39
De Corsica !
Post(s): 1027
Pourquoi ça te gène de laisser la classe en dehors de Text ? Oui je pense que ça serait possible, ça s'appelle une classe interne, du coup elle ne serait accessible qu'au sein de ta classe toto. Après je vois pas trop l’intérêt de faire ça.

Par contre dans ton __init__ la condition est inutile, parce que la fonction init se lance une seule fois à la création de l'objet toto. Donc pour moi ça sert à rien de mettre une condition. A la limite tu peux directement assigner ta variable 'init' si tu veux vraiment l'avoir en stock sans passer par un if 'toto'...

Contribution le : 23/03/2018 15:54
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
(1) 2 3 4 »




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
[WIP] et travaux terminés Teeny Tiny - Story 7 355 Hier 22:40:12
Bibi09 
Questions & Réponses Ciel sans skybox ou skydome ? 4 48 Hier 21:40:59
Bibi09 
Questions & Réponses Enlever les reflets des arbres dans le shader glass? 6 175 Hier 21:31:59
Fracoris 
Questions & Réponses Blender 2.8 dupliquer un cylindre sans deformation le long d une courbe    [1][2][3] 26 323 Hier 14:41:12
Bibi09 
Moteur de jeu GameBlender et alternatives [non résolu] Modifier un visage - ajouter machoire    [1][2] 13 579 Hier 12:37:06
Redstar 
[WIP] et travaux terminés [terminé] Modélisation et Animation d'un Bulldozer 5 362 Hier 12:29:38
Redstar 
Questions & Réponses Conversion de textures "cycle" en textures "Eevee" 1 55 10/12 22:01:35
Rimpotche 
Questions & Réponses Rigging mécanique 2 84 10/12 19:36:44
mapleberry 
Questions & Réponses [résolu] Utilisation carte graphique 6 267 10/12 14:29:50
HarDrive 
Le coin des geeks information sur taille prise en memoire par le projet pour choix GPU    [1][2][3] 21 925 10/12 11:58:49
papillon 
Questions & Réponses Faire un bonhomme mou 1 82 09/12 19:17:57
Bibi09 
The Blender Clan 'tchat Ré-ouverture de mon site 0 69 09/12 18:51:46
thierry_st_malo 
Python & Plugins [WIP] Créer son propre launcher de jeux. 1 113 09/12 18:08:00
Redstar 
Questions & Réponses Combinaison de modèles 3d 1 72 09/12 13:27:47
Rimpotche 
The Blender Clan 'tchat Presentation 1 73 08/12 23:21:59
G-tout-court 
Questions & Réponses modélisation 2.81 1 91 08/12 21:31:01
Gilead_Maerlyn 
[WIP] et travaux terminés [WIP] Bataille Navale // Animation 3d    [1][2][3][4] 33 3482 08/12 13:06:42
ju 
Questions & Réponses découpage du maillage pendant l'animation 1 92 07/12 18:26:01
moonboots 
[WIP] et travaux terminés [WIP] Goatster 6 389 07/12 17:02:39
Mercer 
Questions & Réponses Importer des objets de Maya dans Blender 2 131 07/12 10:05:44
lucky 

Qui est en ligne
81 utilisateur(s) en ligne (dont 46 sur Forums)

Membre(s): 1
Invité(s): 80


HermineLov, plus...
Nouveaux membres
ToniaBlock 12/12/2019
JasminMinn 12/12/2019
HermineLov 12/12/2019
JeffryKiss 12/12/2019
ZacherySau 12/12/2019
LudieChest 12/12/2019
AnjaHig178 12/12/2019
ErnaHorvat 12/12/2019
BrittneyBa 12/12/2019
EllisLawle 12/12/2019
Dernier Ajout
2019-11-05 01.JPG

Evènements à venir
Dec 29
Anniversaire d'ebrain
Jan 11
BUG de Lyon
Fev 15
Anniversaire de Dany
plus 277 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2019 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445