Différence entre méthode de classe et méthode normale
J'ai un peu de mal à voir l'interêt des méthodes de classe.
Dans le code ci-dessous, ma méthode fiat() n'est pas une méthode de classe à proprement parlé vu que je n'ai pas mis le décorateur. Mais pourtant elle fait la même chose que les méthodes mercedes ou porsche non ?
class Voiture:
def __init__(self, marque, vitesse, prix):
self.marque = marque
self.vitesse = vitesse
self.prix = prix
@classmethod
def porsche(cls):
return cls("Porsche", 200, 10)
@classmethod
def mercedes(cls):
return cls("Mercedes", 150, 20)
def fiat():
return Voiture("Fiat", 100, 2)
Du coup j'ai du mal à quoi ça sert de faire une méthode de class en utilisant le décorateur et en lui passant cls en paramètre alors que je peux faire la même chose sans.
Salut :)
Oui ... intéressant !
Mais dans ta méthode fiat, tu retourne de manière statique une instance de la classe Voiture. En cas d'héritage ça risque de devenir embêtant.
Test ce bout de code :
class Voiture:
def __init__(self, marque, vitesse, prix):
self.marque = marque
self.vitesse = vitesse
self.prix = prix
@classmethod
def porsche(cls):
return cls("Porsche", 200, 10)
def fiat():
return Voiture("Fiat", 100, 2)
class VoitureHeritage(Voiture):
def __init__(self, marque, vitesse, prix, couleur):
super().__init__(marque, vitesse, prix)
self.couleur = couleur
@classmethod
def peugeot(cls):
return cls("Peugeot", 220, 30, "bleu")
print(type(VoitureHeritage.peugeot()))
print(type(VoitureHeritage.fiat()))
Du coup fiat est toujours liée à Voiture. Niveau maintenabilité du code ça peut vite devenir le bazar.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte