Python name not define,可是我已经定义了?求解

代码如下:

 #-*-conding:utf-8 -*-
#file:Sort.py
#

class Btree:
    def __init__(self,value):
        self.left=None
        self.data=value
        self.rigth=None

    def insertLeft(self,value):
        self.left=Btree(value)
        return self.left

    def insertRight(self,value):
        self.right=Btree(value)
        return self.right

    def show(self):
        print(self.data)

    def inorder(node):               
        if node.data:
            if node.left:
                inorder(node.left)
                node.show()
                if node.right:
                    inorder(node.right)

    def rinorder(node):              
        if node.data:
            if node.right:
                rinorder(node.right)
                if node.left:
                    rinorder(node.left)

    def inserts(node, value):
        if value > node.data:
            if node.right:
                inserts(node.right,value)
            else:
                node.insertRight(value)
        else:
            if ndoe.left:
                inserts(node.left,value)
            else:
                node.insertLeft(value)

if __name__=='__main__':
    l=[2,7,3,88,23,11]
    Root=Btree(l[0])
    node=Root
    for i in range(1,len(l)):
        inserts(Root,l[i])

    print('****************************************')
    print('         xiao dao da')
    print('****************************************')
    inorder(Root)
    print('****************************************')
    print('         da dao xiao')
    print('****************************************')
    rinorder(Root)






报错:NameError: name 'inserts' is not defined
求解。。。。。。。

你要是想把insert 定义在类外,就要改缩进,要是在类中,就要 用类对象来访问

inserts是Btree的方法,不能够直接调用,要通过Btree的实例去调用,比如你这里的Root

Root.inserts(Root,l[i])

inorder/rinorder/inserts这三个函数没有self入参,明显不是BTree这个class里的,将这三个函数的缩进改到与BTree同级就可以了。