[Python3.1.2] Impossible d'utiliser __init__ avec des paramètres [Résolu]

Messages postés
6
Date d'inscription
lundi 1 mars 2010
Dernière intervention
13 mai 2010
- 6 mai 2010 à 18:00 - Dernière réponse :
Messages postés
6
Date d'inscription
lundi 1 mars 2010
Dernière intervention
13 mai 2010
- 7 mai 2010 à 22:39
bonjour,

j'ai créer une classe avec deux arguments sur le constructeur, lorsque j'essaie de l'utiliser j'ai comme message d'erreur :
>>> b = MyLog(12,25)
Traceback (most recent call last):
File "", line 1, in <module>
b = MyLog(12,25)
TypeError: 'module' object is not callable


avec un exemple du livre de G Swinnen cela fonctionne,
ou avec un exemple de mon cru
class Taz:
def __init__(self,un=None,deux=None):
print('dans le constructeur')

cela donne

>>> x = Taz('1',2)
dans le constructeur
>>>


Je ne vois pas la différence.

Pouvez vous m'indiquez mon erreur.

Merci

@+
le code :
import time
import os
class MyLog:
"Gestion des log"
def __init__(self,Pathfile=None,FileName=None):
# on creer un objet time
self.temps = time
if FileName == None:
# Le nom est vide on initialise avec le timestamp
self.FileLog = 'Kersave'+ str(int(self.temps.time())) + '.log'
# ou self.FileLog = 'Kersave'+ str(int(self.temps.strftime("%Y%m%d%H%M%S")) + '.log' 
else:
self.FileLog = FileName
if os.path.isdir(PathFile):
self.FileLog = PathFile + self.FileLog
else:
# Ail le chemin n'existe pas ou n'est pas bon, on fait quoi ? un log dans c:\temp
if not os.path.isdir('c:\temp'):
os.mkdirs('c:\temp')
PathFile = 'c:\temp\\'
self.FileLog = Pathfile + self.FileLog

def __del__(self):
#destructeur
sefl.close_file()

def open_file(self):
# creation du fichier de log
self.file = open(self.FileLog,'a')

def close_file(self):
# Fermeture du fichier de log
self.file.close()

def  add_log(self,text):
# Ajout d'information dans le log
# Formatage [date] texte self.temps.strftime("[%d/%m/%Y %H:%M:%S]"
self.file.write(self.temps.strftime("[%d/%m/%Y %H:%M:%S]") + ' ' + text + '\r\n')

def view_log(self):
# Affiche le log
self.close_file()
f = open(self.FileLog,'r')
txt = ''
while 1:
tmp = f.readline()
if tmp == '':
break
txt = txt + tmp
f.close()
print(txt)
# pkoi pas un return txt plus tard ?

def clear_file(self):
# destruction du fichier on le vide mais le garde ouvert (pour le cas ou ;))
self.close_file()
a = open(self.FileLog,'w')
a.close()
self.open_file()
# fin de la classe
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
6
Date d'inscription
lundi 1 mars 2010
Dernière intervention
13 mai 2010
- 7 mai 2010 à 22:39
3
Merci
bon ben me manquais la notion de module.

Pour ceux que ça intéressent

en gros une classe ou une fonction
class bar:
blabla

dans un fichier fu sera utiliser de la façon suivante dans un autre fichier
import fu

instanceDeClasse = fu.bar()

c'est tout ..

Merci à ceux qui ont lu (ou pas)

@+

Merci titoulaka 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de titoulaka
Messages postés
6
Date d'inscription
lundi 1 mars 2010
Dernière intervention
13 mai 2010
- 7 mai 2010 à 13:03
0
Merci
après test si je fait
logage = MyLog('C:\Temp','Log de test')
logage.add_log('ligne de test 1')
logage.add_log('ligne de test 2')
logage.add_log('ligne de test 3')
logage.view_log()

en bas du fichier contenant le code du 1er message, cela fonctionne

si je creer un fichier simple
# -*- coding: utf-8 -*-
import os
import time
import shutil
import configparser
import MyLog

logage = MyLog('C:\Temp','Log de test')
logage.add_log('ligne de test 1')
logage.add_log('ligne de test 2')
logage.add_log('ligne de test 3')
logage.view_log()

=>
C:\Python31>python.exe hum.py
Traceback (most recent call last):
File "hum.py", line 12, in <module>
logage = MyLog('C:\Temp','Log de test')
TypeError: 'module' object is not callable/code

le x = MyLog fonctionne
help(x) donne
[quote]
C:\Python31>python.exe hum.py
Help on module MyLog:

NAME
MyLog

FILE
c:\python31\mylog.py

CLASSES
builtins.object
MyLog

class MyLog(builtins.object)
| Gestion des log
|
| Methods defined here:
|
| __del__(self)
|
| __init__(self, PathFile=None, FileName=None)
|
| add_log(self, text)
|
| clear_file(self)
|
| close_file(self)
|
| open_file(self)
|
| view_log(self)
|
| ---------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)


Je ne vois pas pourquoi le fait d'importer la classe d'un fichier ne me permet pas d'utiliser la classe comme il faut.

Où est mon erreur ?

Merci

@+
Commenter la réponse de titoulaka

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.