Bonjour,

Je suis formé en java mais je m'intéresse depuis peu à python pour son côté libre, open source est la richesse des api qu'on peut trouver.

Je souhaitais mettre une méthode de class (équivalant à static en java) dans la classe suivante mais python semble ne pas comprendre.

J'ai fais quelques recherches sur seek.fr mais rien de satifaisant.


Voici le code.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
 
 -*- coding: latin-1 -*-
'''
 
# ce code pourrait faire partie d'un logiciel libre payant open source GPL chaque personne pourrait ou non ce faire pyer pour le travail sur son code.
# Ce code serait distribuer en open source dans l'espoir qu'il serait am�lior� et maintenu par une communaut� motiv�e et afin que le programme
# qui en r�sulte ne meure si possible jamais.
 
 
 
Created on 11 févr. 2015
 
@author: Battant
'''
 
 
import logging, logging.handlers
from PyQt4.QtGui import *
from mainmenu import mainmenu
 
import sys
 
'''
Cette classe va démarrer le programme de facturation  billmanagee
'''
class Starter :
 
    verbose = False
 
 
#La méthode prepareLogFile fait le nécessaire pour préparer le journal de débugage et d'erreur
 
    def prepareLogFile(cls) :
        Starter.logfile.vl = logging.DEBUG
        Starter.logfile = "billManagerOutput.log"
        Starter.logfile.basicConfig (filename = Starter, filemode='a', format = Starter.form ,level= Starter.logfile.lvl)
        Starter.file_handler = Starter.logging.handlers.RotatingFileHandler(Starter.logfile, backupCount=7,
                                                                            encoding='utf-8')
        Starter.file_handler.setFormatter(logging.Formatter(Starter.form))
        Starter.logger.addHandler(Starter.file_handler)
 
 
 
 
 
if __name__=='__main__':
        Starter.app = QApplication(sys.argv)
        Starter.prepareLogFile()
        print ('session principale')
        if '-v' in sys.argv :
            verbose = True
if verbose :
       logging.debug ('session principale')
       logging.debug ('construction mainmenu')
window = mainmenu.MainMenu()
window.show()
if verbose :
        Starter.logging.debug ('mainmenu construit')
 
sys.exit(Starter.app.exec_())
et Mainmenu

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
#!/usr/bin/env python
# -*- coding: latin-1 -
# Auteur Battant
 
# ce code pourrait faire partie d'un logiciel libre payant open source GPL chaque personne pourrait ou non ce faire pyer pour le travail sur son code.
# Ce code serait distribuer en open source dans l'espoir qu'il serait am�lior� et maintenu par une communaut� motiv�e et afin que le programme
# qui en r�sulte ne meure si possible jamais.
 
import logging, logging.handlers
from PyQt4.QtGui import *
 
import sys
 
 
class MainMenu (QWidget) :
 
 
 
    def __init__(self, parent=None) :
        QWidget.__init__(self, parent)
        self.clients = QPushButton('Clients',self)
        self.prestations = QPushButton ('Prestations',self)
        self.factures = QPushButton ('Facture',self)
        self.agenda = QPushButton ('agenda',self)
        self.Quitter = QPushButton('Quitter',self)
        self.configEvent()
        self.setWindowTitle('Menu principal')
        self.menuLayout = QBoxLayout()
        self.menuLayout.addWidget(self.clients)
        self.menuLayout.addWidget(self.prestations)
        self.menuLayout.addWidget(self.factures)
        self.menuLayout.addWidget(self.agenda)
        self.setLayout(self.menuLayout)    
        #quitLayout = QHBoxLayout()
        #quitLayout.addWidget(Quitter)
 
        self.menuLayout.addWidget(self.Quitter)
 
    def configEvent(self) :
 # code de  VinsS de developpez.com
        self.Quitter.clicked.connect(quit)
Question :

Pourquoi python ne comprend pas que cette méthode qui est static =

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
        Starter.prepareLogFile()
Exception :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Traceback (most recent call last):
  File "Starter.py", line 48, in <module>
    Starter.prepareLogFile()
TypeError: unbound method prepareLogFile() must be called with Starter instance as first argument (got nothing instead)

Merci pour votre aide

Salutations