Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7690215
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 31, 20262026-05-31T20:20:42+00:00 2026-05-31T20:20:42+00:00

when I run this program, it print NameError global name ‘viewAll’ is not defined

  • 0

when I run this program, it print NameError global name 'viewAll' is not defined

I’ m a C programmer, I didn’t know why.

viewAll(this) is defined in class binTree,

Platform:Python 2.7 in windows 7 64 bit

#!/usr/bin/python
#-*-coding:gbk-*-

class binTree():
    def __init__(this, left = None, right = None, data = 0):
        if data == 0:
            this = None
        else:
            this.leftNode = left
            this.rightNode = right
            this.data = data
    def viewAll(this):
        if this != None:
            print this.data,
            viewAll(this.leftNode)
            viewAll(this.rightNode)

def creatBT():
    temp = input('Please input a number, input "0" for end!')
    if temp == 0:
        return None
    else:
        tree = binTree()
        tree.data = temp
        tree.leftNode = creatBT()
        tree.rightNode = creatBT()
        return tree

if __name__ == "__main__":
    root = creatBT()
    root.viewAll()
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-31T20:20:43+00:00Added an answer on May 31, 2026 at 8:20 pm

    You need to do a Python tutorial — you’re not understanding how the instance object works in Python instance methods.

    Your problem is here:

    def viewAll(this):
        if this != None:
            print this.data,
            viewAll(this.leftNode)
            viewAll(this.rightNode)
    

    You need to access viewAll on the instance you want to call it on:

    def viewAll(this):
        if this != None:
            print this.data,
            this.leftNode.viewAll()
            this.rightNode.viewAll()
    

    I’m not sure what you’re intending to do here:

        if data == 0:
            this = None
    

    but all you are actually doing is pointing the name this at None in the scope of that one function call. It doesn’t change anything about the class instance or anything outside the function.

    So, in viewAll,

        if this != None:
    

    will always be True, because this is again the instance you’ve called viewAll on — it hasn’t been and can’t be set to None.


    class binTree():
        # I removed __init__ to show you weren't using it
        def viewAll(self):
            print self.data,
            # don't try to show a node that is empty
            if self.leftNode:
                self.leftNode.viewAll()
            if self.rightNode:
                self.rightNode.viewAll()
    
    def creatBT():
        try:
            # don't use input
            temp = int(raw_input('Please input a number, input "0" for end!'))
        except ValueError:
            # in case they don't put in a number
            temp = 0
        if temp == 0:
            return None
        else:
            tree = binTree()
            tree.data = temp
            tree.leftNode = creatBT()
            tree.rightNode = creatBT()
            return tree
    
    if __name__ == "__main__":
        root = creatBT()
        # don't try to show the nodes if none were created
        if root:
            root.viewAll()
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have run this program before and it worked fine. Then I added the
When I run this program, I enter the username as dcole and the password
This program I use has it's own variables to set when you run it,
I need to run this line from my c++ program: java -jar test.jar text1
Is there a program which I can run like this: py2py.py < orig.py >
I've run into this while writing a Traveling Salesman program. For an inner loop,
To run a program with custom env settings, we do this on Linux $
Everytime I run the program, this mysterious error pops up saying that I have
I have this problem when trying to run hello world program using android SDK.
When I run this program on ActivePerl 5.8 on Windows XP, I get a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.