OO in Python? ^^

Heiko Wundram modelnine at bit-bukket.org
Sat Dec 10 18:40:09 EST 2005


Brian Beck wrote:
>> 
>> class D1(Base):
>>    def foo(self):
>>       print "D1"
>> 
>> class D2(Base):
>>    def foo(self):
>>       print "D2"
>> obj = Base() # I want a base class reference which is polymorphic
>> if (<need D1>):
>>    obj =  D1()
>> else:
>>    obj = D2()
> 
> I have no idea what you're trying to do here and how it relates to
> polymorphism.
> 

He's translating C++ code directly to Python. obj = Base() creates a
variable of type Base(), to which you can assign different object types (D
(), D2()) which implement the Base interface (are derived from Base).
Err... At least I think it's what this code is supposed to mean...

In C++ you'd do:

Base *baseob;

if( <i want d1> ) {
    baseob = (Base*)new D1();
} else {
    baseob = (Base*)new D2();
}

baseob->foo();

(should, if foo is declared virtual in Base, produce "d1" for D1, and "d2"
for D2)

At least IIRC, it's been quite some time since I programmed C++... ;-)
*shudder*

--- Heiko.



More information about the Python-list mailing list