Movatterモバイル変換


[0]ホーム

URL:


Newbie inheritance problem

Michael Hudsonmwh21 at cam.ac.uk
Mon Apr 2 08:57:06 EDT 2001


zzzzz <zzizz_ at notmail.com> writes:> Hi all, I have overwridden the __add__ method for a class, then built> a class based on the above class; however, the object I'm returning is> of the base class not the inherited class. If that doesn't make sense> see below:>> class A:>     def __init__(self,value=0.0)>         self._value=float(value)>     def __add__(self,other)>         return A(self._value+other._value)>> class B(A):>     pass>> x=B(3)> y=B(2)> z=x+y>> The way I've done it z becomes an instance of A not B!!! How do I do> it correctly? Do I have to override all the __add__, __sub__, etc...> methods?Well, you can do this:class A:    def  __init__(self,value=0.0)        self._value=float(value)    def __add__(self,other)        return self.__class__(self._value+other._value)HTH,M.--   same software, different verbosity settings (this one goes to  eleven)                             -- the effbot on the martellibot


More information about the Python-listmailing list

[8]ページ先頭

©2009-2025 Movatter.jp