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:
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"
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
>>>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)
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
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)
donnent les mêmes erreurs ou bien ne sont carrément pas valables :-S

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!