函数已定义却报错,NameError

我明明定义了函数 AND() NAND() OR() XOR()
可是运行显示
name 'NAND' is not define

import numpy as np
class perceptron:
    def AND(x,y): # 定义与门
        b=-0.7
        m=np.array([x,y])
        w=np.array([0.5,0.5])
        tmp=np.sum(m*w)+b#利用矩阵运算
        if tmp<=0 :
            return 0
        else:
            return 1
    def NAND(x,y):#定义与非门
        b=-0.7
        m=np.array([x,y])
        w=np.array([0.5,0.5])
        tmp=np.sum(m*w)+b
        if tmp<=0 :
            return 1
        else:
            return 0
    def OR(x,y):#定义或门
        b=-0.4
        m=np.array([x,y])
        w=np.array([0.5,0.5])
        tmp=np.sum(w*m)+b
        if tmp<=0:
            return 0
        else:
            return 1
    def XOR(x,y):
        s2=OR(x,y)
        s1=NAND(x,y)
        z=AND(s1,s2)
        return z

d=perceptron
d.XOR(1,1)
NameError                                 Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_15012/3159189255.py in <module>
      1 d=perceptron
----> 2 d.XOR(1,1)

~\AppData\Local\Temp/ipykernel_15012/2324730699.py in XOR(x, y)
     30     def XOR(x,y):
     31         s2=OR(x,y)
---> 32         s1=NAND(x,y)
     33         z=AND(s1,s2)
     34         return z

NameError: name 'NAND' is not defined