[débutant] programmation object en python
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:
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:
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:
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!