Path: csiph.com!news.redatomik.org!news.izac.org!reader From: Benoit Izac Newsgroups: fr.comp.lang.python Subject: Re: conflit entre modules ? surcharge de sqrt Date: Sun, 14 Jan 2018 12:18:43 +0100 Message-ID: <877eskzo18.fsf@izac.org> References: <5a5b2e78$0$4843$426a74cc@news.free.fr> <87bmhwzpji.fsf@izac.org> <5a5b39c0$0$3842$426a74cc@news.free.fr> Reply-To: benoit.izac@free.fr Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Injection-Info: keg.izac.org; logging-data="7178"; mail-complaints-to="usenet@izac.org" Xref: csiph.com fr.comp.lang.python:3016 Bonjour, Le 14/01/2018 à 12:06, Fabrice a écrit dans le message <5a5b39c0$0$3842$426a74cc@news.free.fr> : >> Il n'y a pas de surcharge de fonction comme en C++ ; la fonction sqrt() >> du module math n'est plus accessible car remplacée par celle de cmath. > > Ah ! J'ai cru qu'il y en avait car les opérateurs sont surchargés. Il ne sont pas surchargés, ils se comportent différemment selon le type des objets sur lesquels ils s'appliquent. Tu peux faire la même chose avec une fonction : def f(arg): if isintance(arg, int): # faire quelque chose avec cet int elif isinstance(arg, float): # faire quelque chose avec ce float elif isinstance(arg, complex): # faire quelque chose avec ce complex else: # faire quelque chose f() se comporte différemment selon le type de l'argument mais, contrairement à C++, il n'y a qu'une fonction f(), ce n'est donc pas un mécanisme de surcharge. -- Benoit Izac