[Tutor] Trouble with exercise regarding classes

Alex Hall mehgcap at gmail.com
Thu Aug 26 04:51:32 CEST 2010

On 8/25/10, Andrew Martin <amartin7211 at gmail.com> wrote:
> All I want to do is add a line that displays that maximum height the
> cannonball reaches. I created a variable zenith to store the highest y
> value. I then wanted to compare the current y value of the cannonball to
> zenith while the cannonballs y value is greater than zero. If the
> cannonballs current y value is greater than zenith, I want to have the
> current value replace zenith. Finally, once the cannonball has reaches y =
> 0, I wanted the program to write out the value for zenith.
> I want to compare zenith, a floating point number, with the current y value?
> I thought the current y value could be retrieved by Projectile.getY. And how
It can, but you need parentheses after the function call.
> do I call the getY using the instance?
I think the problem may be where you say
instead of
When you hear "instance", do not panic. An instance is just a variable
of type class. For example, "ball" is an instance of the Projectile
class. As an example, if I had a "pet" class, I might make a "dog"
variable of type pet:
After I have my dog set up, since it is an instance of the Pet class,
it has all the methods available in the Pet class. I might say
which would just look at my Pet class for a "speak" method, and call
it. In the same way, you have a "ball" variable which is  a
Projectile, so you have all the methods and variables from the
Projectile class available in the "ball" variable. Note that, if a
variable is of type class, it is also called an object, so I could
have as easily called the "ball" a Projectile object.
> On Wed, Aug 25, 2010 at 7:24 PM, Alan Gauld
> <alan.gauld at btinternet.com>wrote:
>> "Andrew Martin" <amartin7211 at gmail.com> wrote
>>  However, when I did so I got this error: "TypeError: unbound method
>> getY()
>>> must be called with Projectile instance as first argument (got nothing
>>> instead) "
>>  def main():
>>>>    angle, vel, h0, time = getInputs()
>>>>    cball = Projectile(angle, vel, h0)
>> cball is a Projectile instance
>>     zenith = 0.0
>>>>    while cball.getY() >= 0:
>> So this is fine
>>         cball.update(time)
>>         if Projectile.getY > zenith:
>>>>            zenith = Projectile.getY()
>> But what are you doing here?
>> You are trying to compare the getY method of the class with a floating
>> point number?
>> Then you call getY using the class rather than the instance?
>> I'm confused - and so is Python...
>> --
>> Alan Gauld
>> Author of the Learn to Program web site
>> http://www.alan-g.me.uk/
>> _______________________________________________
>> Tutor maillist  -  Tutor at python.org
>> To unsubscribe or change subscription options:
>> http://mail.python.org/mailman/listinfo/tutor

Have a great day,
Alex (msg sent from GMail website)
mehgcap at gmail.com; http://www.facebook.com/mehgcap

More information about the Tutor mailing list