Which part of the loop is it going through in this class frame?

dieter dieter at handshake.de
Thu Mar 8 01:45:30 EST 2018


C W <tmrsg11 at gmail.com> writes:
> I am new to OOP. I'm a bit confused about the following code.
>
> class Clock(object):
>     def __init__(self, time):
>         self.time = time
>     def print_time(self):
>         time = '6:30'
>         print(self.time)
>
> clock = Clock('5:30')
> clock.print_time()
> 5:30
>
> I set time to 6:30, but it's coming out to 5:30. I guess it's because I
> passed in 5:30, so, it's replaced?

Inside a method, you must explicitely use the instance
(conventionally (and in your case) names "self") to access an object
attribute. In your example, this means, you must use "self.time = '6:30'
not "time" alone (you did this in the "__init__" method).
If you are using "time" (without the "self." prefix), you are defining
a new local variable.

In this regard, Python differs from many object oriented languages.




More information about the Python-list mailing list