[Tutor] exercise with classes

Tonu Mikk tmikk at umn.edu
Thu Feb 9 20:23:43 CET 2012


On Mon, Feb 6, 2012 at 12:58 PM, Dave Angel <d at davea.name> wrote:

> On 02/06/2012 01:24 PM, Tonu Mikk wrote:
>
>> Now I get an error:  NameError: global name 'self' is not define.
>>
>> Tonu
>>
>>
>>  Put your remarks after the stuff you quote.  You're top-posting, which
> makes the reply difficult to follow.
>
> Use copy/paste to describe an error message.  You retyped the one above,
> and added a typo.  Include the whole error, which includes the stack trace.
>
> If you had followed Nate's advice, you couldn't have gotten that error at
> all, so you'll also need to post the code that actually triggers the error.


Let's try this one more time.  I thought that I would try to make Alan's
code work.  Here is the version what I have now:

class Printer:
  def __init__(self,number=0):
     self.value = number
  def sayIt(self):
     print self.value

class MyApp:
  def __init__(self, aPrinter = None):
      if aPrinter == None:     # if no object passed create one
         aPrinter = Printer()
      self.obj = aPrinter      # assign object
  def doIt():
      self.obj.sayIt()         # use object

def test():
  p = Printer(42)
  a1 = MyApp()
  a2 = MyApp(p)   # pass p object into a2
  a1.doIt(self)   # prints default value = 0
  a2.doIt(self)   # prints 42, the value of p

test()

When I run it, I get an error:
Traceback (most recent call last):
  File "alan_class.py", line 22, in <module>
    test()
  File "alan_class.py", line 19, in test
    a1.doIt(self)   # prints default value = 0
NameError: global name 'self' is not defined



>
>
>
>
>
>
> --
>
> DaveA
>
>


-- 
Tonu Mikk
Disability Services, Office for Equity and Diversity
612 625-3307
tmikk at umn.edu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20120209/87329017/attachment.html>


More information about the Tutor mailing list