TimRin
TimRin

Reputation: 77

NameError: 'self' is not defined

I'm making a random circle-drawing program. After the circles are drawn, it converts the turtle graphic to a PNG. I'm getting an error that reads "NameError: name 'self' is not defined". Does anyone know why?

import random  
import time  
import turtle
import os

print("Abstract Art Template Generator")
print()
print("This program will generate randomly placed and sized circles on a blank screen.")
num = int(input("Please specify how many circles you would like to be drawn: "))
radiusMin = int(input("Please specify the minimum radius you would like to have: "))
radiusMax = int(input("Please specify the maximum radius you would like to have: "))
screenholder = input("Press ENTER when you are ready to see your circles drawn: ")

t = turtle.Pen()
wn = turtle.Screen()

def mycircle():
    x = random.randint(radiusMin, radiusMax) 
    t.circle(x)

    t.up()
    y = random.randint(0, 360)
    t.seth(y)
    if t.xcor() < -300 or t.xcor() > 300:
        t.goto(0, 0)
    elif t.ycor() < -300 or t.ycor() > 300:
        t.goto(0, 0)
    z = random.randint(0, 100)
    t.forward(z)
    t.down()


for i in range(0, num):
    mycircle()


cv = turtle.getcanvas()
cv.postscript(file="template.ps", colormode='color')

os.system("mkdir / template.ps")
os.system("gs -q -dSAFER  -sDEVICE=png16m -r500 -dBATCH -dNOPAUSE  -dFirstPage=%d -dLastPage=%d -sOutputFile=/template.png %s" %(i,i,self.id,i,psname))


turtle.done()

Upvotes: 0

Views: 558

Answers (2)

Buzz
Buzz

Reputation: 1907

In Python, self is usually used within classes (objects) to reference the object you are working with. It is possible to use self without a class as a variable, but it needs to be defined first.

In your code, you did not define self to be equal to anything, so the code does not know what to do with it.

If you are trying to use it to access an object, it can not be done this way. It must be done inside of a class, similar to the way this works in Java.

This answer might help you understand self in Python.

Upvotes: 1

Simon Charette
Simon Charette

Reputation: 5116

Look at your last os.system line, you're trying to interpolate self.id which is undefined.

Upvotes: 1

Related Questions