Bonjours,
J'ai un petit problème au niveau de la compréhension de l'héritage en python. je souhaite hériter d'une classe pour modifier une méthode à l'intérieur, et ajouter un paramètre à passer à cette classe.
Je veux modifier la classe smtplib pour permettre un bind sur une adresse spécifique l'or d'un envoie d'email.
Voici un exemple en quelque lignes:
Au moment de tester mon code j'obtiens cette erreur:
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 import smtplib import socket import re import email.utils import base64 import hmac from email.base64mime import encode as encode_base64 from sys import stderr class SMTP2(smtplib.SMTP): def __init__(self, host='', port=0, local_hostname=None,timeout=socket._GLOBAL_DEFAULT_TIMEOUT, bind_ip=None): def _get_socket(self, port, host, timeout, bind_ip=None): # This makes it simpler for SMTP_SSL to use the SMTP connect code # and just alter the socket connection bit. if self.debuglevel > 0: print>>stderr, 'connect:', (host, port) return socket.create_connection((port, host), timeout, (bind_ip, '')) s = SMTP2('smtp.google.com', bind_ip='192.168.0.2') s.sendmail('test@test.com', 'test@test.com', 'Ceci est un test')
Je pense que c'est un soucis au niveau de l'héritage de la classe SMTP / ou du constructeur.root@squeeze:~# python test.py
Traceback (most recent call last):
File "test.py", line 24, in <module>
s.sendmail('test@test.com', 'test@test.com', 'This is a test')
File "/usr/lib/python2.6/smtplib.py", line 685, in sendmail
self.ehlo_or_helo_if_needed()
File "/usr/lib/python2.6/smtplib.py", line 509, in ehlo_or_helo_if_needed
if not (200 <= self.ehlo()[0] <= 299):
File "/usr/lib/python2.6/smtplib.py", line 382, in ehlo
self.putcmd(self.ehlo_msg, name or self.local_hostname)
AttributeError: SMTP2 instance has no attribute 'local_hostname'
Merci de votre aide,
Partager