
Envoyé par
fred1599
Note: Je remarque l'utilisation de
classmethod, là on commence à utiliser le bazookas pour tuer une mouche

Conceptuellement il y a sans doute une explication de sa part...
Lol je voulais mettre aussi les attributs densite et V en @property mais je me suis retenu. Heureusement sinon t'aurais parler non pas de bazookas mais de tête nucléaire 
Plus sérieusement, c'est en effet un choix de conception ce classmethod. Ca permet de garder un constructeur non random : on peut initialiser la classe avec des valeurs données (que l'utilisateur aurait choisi par exemple) comme ceci
cube = CubeMetallique(5,1,"cuivre")
et on peut aussi appelé la classmethod pour construire l'objet en random. On peut s'en passer mais sinon :
1) soit on fait un constructeur qui randomise directement le truc (on perd donc la fonctionalité qui est de pouvoir créer un cube métallique avec des valeurs que l'on choisi)
2) soit pour créer un cube métallique random, on est obligé de chainer 2 méthodes du style remplacer (le constructeur + une autre méthode) :
cube = CubeMetallique.create_randomly()
par
cube = CubeMetallique().update_with_new_random_values()
en admettant qu'on ait donné des valeurs par défaut au constructeur comme
def __init__(self,k=1,e=1,m='fer'):
mais sémantiquement, on n'a pas vraiment de raison d'initialiser par défaut une instance sur un métal précis plutôt qu'un autre...
@pir2Paris : Si tu veux comprendre un peu ici l'idée de ce que je racontes sans être familier avec les classes, tu auras besoin de savoir qu'écrire
cube = CubeMetallique(5,1,"cuivre")
va appelé la fonction __init__ de la classe CubeMetallique
Partager