(1) 2 3 4 »


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

Contribution le : 05/03/2018 17:12
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1653
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 11:42
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/07/2011 20:39
De Corsica !
Post(s): 1224
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 13:07
_________________
Venez tester notre projet de Blender clan 2.0 + Tchat (en cours de développement) !
Pourquoi ? Retrouver un forum fonctionnel.
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1653
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 14:40
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/07/2011 20:39
De Corsica !
Post(s): 1224
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 17:35
_________________
Venez tester notre projet de Blender clan 2.0 + Tchat (en cours de développement) !
Pourquoi ? Retrouver un forum fonctionnel.
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1653
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 18:29
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/07/2011 20:39
De Corsica !
Post(s): 1224
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 19:38
_________________
Venez tester notre projet de Blender clan 2.0 + Tchat (en cours de développement) !
Pourquoi ? Retrouver un forum fonctionnel.
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
29/04/2007 19: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 00: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 15:30
De Belgique
Post(s): 1653
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 10:12
Créer un fichier PDF de la contribution Imprimer


Re: Python - l'instruction return
OverdOzed
Inscrit:
19/07/2011 20:39
De Corsica !
Post(s): 1224
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 14:54
_________________
Venez tester notre projet de Blender clan 2.0 + Tchat (en cours de développement) !
Pourquoi ? Retrouver un forum fonctionnel.
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 [terminé] Chaussures Très Réalistes (.bend disponible) 2 32 Hier 23:41:16
WinZs 
The Blender Clan 'tchat Addon convertisseur d'images en courbes 2 30 Hier 20:29:31
Rimpotche 
[WIP] et travaux terminés [WIP] Scène de Pti dej à la Française - EVEE a donf - 2.9 Blender 4 66 Hier 19:55:33
meltingman 
The Blender Clan 'tchat Pour les arboriculteurs 3D 1 36 Hier 18:05:18
moonboots 
Hors Sujet !! Faire parler son personnage en 5 minutes - tutoriel Francais - Blender 2.9 4 73 Hier 13:03:28
meltingman 
GIMP Faire un drégradé selon la forme sous gimp 9 63 Hier 12:49:57
Thewada 
Questions & Réponses [résolu] Perte des Vertex lors d'un Separate 7 65 21/10 21:45:05
debutant 
[WIP] et travaux terminés [terminé] Pantin articulé    [1][2] 12 6691 21/10 18:53:51
meltingman 
Questions & Réponses hdri en mode ombrage 1 62 20/10 21:14:15
moonboots 
[WIP] et travaux terminés Moderno 404    [1][2] 11 398 20/10 15:53:21
Rimpotche 
Hors Sujet !! Une citrouille en 13 clics - Tutoriel - Blender 2.9 2 134 19/10 23:40:15
meltingman 
Hors Sujet !! un banc de dauphin - tutoriel - workflow sculpte > bake - 2.9    [1][2] 12 404 19/10 23:36:41
meltingman 
Questions & Réponses [résolu] Particule réaliste pour un sprite    [1][2] 12 632 19/10 13:39:34
Redstar 
Questions & Réponses Eevee : chevauchements en profondeur 4 163 19/10 11:46:51
meltingman 
Questions & Réponses Dans Blender 2.9, rendre une animation avec seulement la réflexion    [1][2] 16 542 19/10 11:08:45
ludo66 
Questions & Réponses Besoin de vos retours ici sur les changements 2.9    [1][2][3] 20 577 18/10 16:02:23
meltingman 
The Blender Clan 'tchat Moniteur endommagé 2 345 18/10 11:59:42
Rimpotche 
The Blender Clan 'tchat Architecture / squelette du futur BC2.0    [1][2][3]...[5] 42 1125 18/10 10:38:14
WinZs 
Moteur de jeu GameBlender et alternatives [WIP] Jeu "Iron Man Collapsing"    [1][2][3][4] 30 12281 17/10 16:05:54
timeman13 
Questions & Réponses Affiner les contours d'un feu 0 349 15/10 19:37:36
Scylla 

Qui est en ligne
156 utilisateur(s) en ligne (dont 82 sur Forums)

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


JaAlVir657, plus...
Nouveaux membres
KrystynaKr 23/10/2020
Romaine198 23/10/2020
MerryMeado 22/10/2020
VonB53421 22/10/2020
MarjorieCa 22/10/2020
Latisha86Z 22/10/2020
WileyMcclo 22/10/2020
DorieFlw44 22/10/2020
LarrySimch 22/10/2020
EmoryNecai 22/10/2020
Dernier Ajout
mirages-preview~0.jpg

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