Bonjour!
Je voudrais savoir si on peut créer une classe, écrire ses méthodes dans un autre fichier *py et importer ce fichier (from xxxx import *)?
Merci de vos précieuses réponses
Version imprimable
Bonjour!
Je voudrais savoir si on peut créer une classe, écrire ses méthodes dans un autre fichier *py et importer ce fichier (from xxxx import *)?
Merci de vos précieuses réponses
Salut,
Si tu cherches à savoir si on peut créer un objet (donc classe) dans un fichier ET ses méthodes dans un autre, je réponds pas directement. A la question, est-ce que l'on peut définir un objet dans autre fichier et l'utiliser, oui tout à fait.
Je pense que c'est la première question qui t'intéresse. Tu dois pouvoir t'en sortir avec de l'héritage comme ceci:
monModule.py:
main.py:Code:
1
2
3
4
5
6
7
8
9 class Module(): """ Module test """ def __init__(self): # Le seul attribut de cet objet est une liste appelée "attribut" self.attribut = [] def maMethode(self): # Cette methode affiche l'attribut de la classe print self.attribut
Bon, dans l'exemple que je donne l'objet "obj" est créé à partir de l'objet "Module" du fichier monModule. Il hérite alors de tout ses attributs et méthodes. Tu peux alors ajouter de nouveaux attributs et méthodes si besoin est. Tu peux l'employer comme ceci:Code:
1
2
3
4
5
6
7 import monModule class obj(monModule.Module): """ Cette classe hérite de Module """ def __init__(self): # On appel le constructeur de Module monModule.Module.__init__(self)
Voilà...Code:
1
2
3
4
5 # Créer un objet: mon_objet = obj() # Affiche son attribut: mon_objet.maMethode()
Ju
Tu peux, mais c'est chiant à faire, ça n'a aucun intérêt et tu perdras l’auto complétion dans les IDE (entre autre...).
Salut,
Techniquement, on peut faire:
module:
class module:Code:
1
2
3 def func(object,...): if object.X ==...: pass
J'ai ajoute X pour montrer que "func" s'attend a ce que l'objet passe en paramètre ait ce X. On appelle çà un pré-requis ou une dépendance.Code:
1
2
3
4 import module class C: X = 'foo' func = module.func
Toute la difficulté de la POO sera de trouver la moins mauvaise association entre C et func pour qu'on ne passe pas trop de temps a trouver pourquoi le programme ne fonctionne plus après un changement de func ou de C.
L’héritage permet de localiser les dépendances: si func dépend d'un objet ayant un attribut X, on peut écrire:
Tant que "self" est un B... on est sur qu'il aura un attribut X et on plus facilement gérer la dépendance entre func et X en mettant cela dans un même fichier.Code:
1
2
3
4
5
6
7 class B: X = 'foo' def func(self,...): if self.X ==...: pass class C(B): pass
Comme une fonction peut avoir plusieurs paramètres, l’héritage est difficile a généraliser. Tester que les objets sont de type attendu via isinstance, vérifier qu'ils ont un attribut X, pour récupérer une valeur de X par défaut ou se vautrer plus élégamment?
- W