Bonjour!
j'ai un script qui marche, et en 50 lignes parse un fichier de configuration plutôt complexe;
J'aimerais ne pas me trainer ce script dans les autres scripts qui utilisent ce fichier de conf, et du coup j'ai pensé à le mettre dans une classe à part et de créer un fichier Configuration lorsque j'en ai besoin.
J'ai rajouté "class Configuration:" puis mis les attributs de class dans la méthode __init__, au final ça donne:
dans un shell python, j'importe le module (la classe est dans un fichier à part) et de ce module ma classe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class Configuration(object): def __init__(self): self.config_file = "/usr/local/scripts/servers.conf" self.hosts_services = list() self.configuration = dict() self.groups = dict() def get_conf(self): # et là le travail se fait def says_blah(self): # Ça c'est pour me ramener à un cas trivial print "blah"
Je ne comprends pas, la ligne c = Configuration() a bien créé une instance? De toute manière les autres tentatives
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 >>>from config import Configuration >>>c = Configuration() >>>c.says_blah() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unbound method says_blah() must be called with Configuration instance as first argument (got nothing instead)
donnent les mêmes erreurs ou bien ne sont carrément pas valables :-S
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 says_blah(c) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'says_blah' is not defined >>> Configuration.says_blah(c) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unbound method says_blah() must be called with Configuration instance as first argument (got type instance instead)
Quelqu'un pourrait me donner une piste?
La POO est souvent présentée comme quelque chose qui simplifie la vie, et pourtant, quelque soit le language, les premiers pas sont durs
Merci!
Partager