Problème d'héritage de classe
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:
Code:
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') |
Au moment de tester mon code j'obtiens cette erreur:
Citation:
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'
Je pense que c'est un soucis au niveau de l'héritage de la classe SMTP / ou du constructeur.
Merci de votre aide,