Python 错误:name错误:name';自我';未定义(即使在主方法中定义了它)

Python 错误:name错误:name';自我';未定义(即使在主方法中定义了它),python,oop,Python,Oop,我是面向对象python的新手,我遇到了一个错误,说NameError:name'self'没有定义。我搜索了很多文章,但都没有找到答案 如果我的代码看起来很愚蠢,请原谅,这是我使用python的头几天。因此,我要做的是使用addStacks、setmentorLearner、setAvailableTime方法存储数据,并使用getMentor方法从\uuuu init\uuuu中的变量访问数据,并在getMentor方法中使用它。 代码如下: class MyClass(): def

我是面向对象python的新手,我遇到了一个错误,说NameError:name'self'没有定义。我搜索了很多文章,但都没有找到答案

如果我的代码看起来很愚蠢,请原谅,这是我使用python的头几天。因此,我要做的是使用
addStacks、setmentorLearner、setAvailableTime
方法存储数据,并使用
getMentor
方法从
\uuuu init\uuuu
中的变量访问数据,并在
getMentor
方法中使用它。 代码如下:

class MyClass():
    def __init__(self):
        self.interest_expertise={}
        self.time = 0
        self.endtime = 0
        self.role = ''

    def addStacks(self):
        self.interest_expertise=input("Enter area of Interest/Expertise")

    def setMentorOrLearner(self):
        self.role = input("Enter whether you are a Mentor or Student")


    def setAvailableTime(self):
        if role.equals("Mentor"):
            self.time = int(input("Enter hour of start (Kindly use 24 hour format)"))
            self.endtime= int(input("Enter hour of ending (Kindly use 24 hour format)"))

    def getMentor(self):
        interest = self.interest_expertise
        time = self.time
        end = self.endtime
        t1 = int(input("Enter time: (kindly in 24 hour format)"))
        topic = input("Enter the topic")
        if (topic in interest):
            if(time <= t1 < end):
                print(self.mentor_name)

    while (1):
        i = int(input("Enter 1 to add data \n 2.To search for mentors \n 3. To Exit"))
        if (i == 3):
            break
        elif (i == 2):
            getMentor(self)
        elif (i == 1):
            addStacks(self)
            setMentorOrLearner(self)

if __name__ == "__main__":
    MyClass().run()
class MyClass():
定义初始化(自):
自我利益{}
self.time=0
self.endtime=0
self.role=''
def添加堆栈(自身):
self.interest\u experties=输入(“输入兴趣/专业领域”)
def设置导师或学习者(自我):
self.role=输入(“输入您是导师还是学生”)
def设置可用时间(自身):
如果角色相等(“导师”):
self.time=int(输入(“输入开始时间(请使用24小时格式)”)
self.endtime=int(输入(“输入结束时间(请使用24小时格式)”)
def getMentor(自我):
兴趣=自利\u专业知识
时间=自我时间
结束=self.endtime
t1=int(输入(“输入时间:(请输入24小时格式)”)
主题=输入(“输入主题”)
如果(感兴趣的主题):

if(time它将在类中调用
self.addStacks()

self是it类的对象,通过write
self.foo()
调用it类的
foo()
方法,可以追加backtrace吗?以及
MyClass.run
定义在哪里?您的代码被误入。从
开始,while(1)
行,代码不在
getMentor
函数中,而是直接在类中,这导致了错误。看起来您需要
def run(self):
while(1)
循环之前运行
while
块。在
MyClass().run()之前定义class
MyClass
时,将执行带有
while
块的代码。