Question about Objects

Jay O'Connor joconnor at cybermesa.com
Fri Nov 21 17:08:44 CET 2003


SBrunning at trisystems.co.uk wrote:

>>From:	campbell95 [SMTP:campbell95 at cox.net]
>>I've been hacking visual basic for several years and understand the basic
>>concepts of OOP. That said, I'm stumped here with the Python Class.
>>
>>Here is the Class...
>>
>>    
>>
>>>class Test:
>>>   def __init__(self, something):
>>>       self.something = something
>>>
>>>   def getSomething(self):
>>>       return self.something
>>>      
>>>
>>This is what I get when I test it. Why does <getSomething> not return the
>>value of <something>? is obvious that <something> has a value. I fear this
>>is a simple oversight but I've racked my brain for hours looking at online
>>doc's and examples. Thanks for any help!!
>>
>>    
>>
>>>Python 2.3 (#46, Jul 29 2003, 18:54:32) [MSC v.1200 32 bit (Intel)] on
>>>      
>>>
>>win32
>>    
>>
>>>Type "copyright", "credits" or "license()" for more information.
>>>****************************************************************
>>>IDLE 1.0      ==== No Subprocess ====
>>>      
>>>
>>>>>>x = Test("Microsoft Sucks")
>>>>>>x.getSomething
>>>>>>            
>>>>>>
>>><bound method Test.getSomething of <__main__.Test instance at
>>>      
>>>
>>0x00C01940>>
>>    
>>
>>>>>>x.something
>>>>>>            
>>>>>>
>>>'Microsoft Sucks'
>>>      
>>>
> 
>getSomething *will* return something - but you have to *call* it.
>
>See, a function (or method, a.k.a a bound method) is also an object.
>"x.getSomething" with no brackets at the end just *refers* to this object.
>To call the function, try "x.getSomething()".
>
>This can be very useful at times, 'cos it allows you to pass functions
>around the same way you do with any other object types. But it also confuses
>VBers. ;-)
>  
>

To help illustrate the point:

 >>> class Test:
    def __init__(self, something):
        self.something = something
    def getSomething(self):
        return self.something

   
 >>> x  = Test("Microsoft Sucks")
 >>> y = x.getSomething
 >>> y()
'Microsoft Sucks'


This is the same as the OP except it assigns x.getSomething to a 
variable.  y now holds the function, and can be called with y()







More information about the Python-list mailing list