Python-属性错误-str';对象没有属性';学生团队';

Python-属性错误-str';对象没有属性';学生团队';,python,class,Python,Class,我正在尝试创建一个程序,允许用户将现有学生添加到现有团队中。当我尝试这样做时,它会生成AttributeError:'str'对象没有属性'studentsinTeam'。我不完全确定如何解决这个问题 class Student: def __init__(self, student_name, form_class): self.student_name = student_name self.form_class = form_class self.stud

我正在尝试创建一个程序,允许用户将现有学生添加到现有团队中。当我尝试这样做时,它会生成AttributeError:'str'对象没有属性'studentsinTeam'。我不完全确定如何解决这个问题

class Student: 

  def __init__(self, student_name, form_class):
    self.student_name = student_name 
    self.form_class = form_class
    self.studentTeamlist = []

  def addtoTeam(self, team):
    if self.student_name not in team.studentsinTeam:
      team.studentsinTeam.append(self.student_name)
      self.studentTeamlist.append(team)

class Team: 


  def __init__(self, team, coach):
    self.team = team
    self.coach = coach
    self.studentsinTeam = []

class AddtoTeamScreen: 
  def __init__(self):


    ###This forms the Window for this Screen###
    self.screen2 = tk.Tk()
    self.screen2.title("Add Student to Team")
    self.screen2.geometry("700x400")
    self.getName2 = tk.StringVar()
    self.getTeam = tk.StringVar()
    ###Main Heading######
    screen2H = tk.Label(self.screen2, text = "Add Student to Team", font=("Arial", 25))
    screen2H.pack()
    ####Student Name######
    StudentNLabel = tk.Label(self.screen2, text="Student Name: ")
    StudentNLabel.pack()

    student_entry = tk.Entry(self.screen2, textvariable = self.getName2)
    student_entry.pack()


    ####Combo Box for Team Selection#####

    TeamNLabel = tk.Label(self.screen2, text= "Team: ")
    TeamNLabel.pack()

    teamcb = ttk.Combobox(self.screen2, values= allTeamlist, height = 2, textvariable = self.getTeam)
    teamcb.pack()

    ATbutton = tk.Button(self.screen2, text = "Add Student", command= self.pressed2)
    ATbutton.pack()

    self.BCKBttn = tk.Button(self.screen2, text = "Back to Main Menu", command= self.back2)
    self.BCKBttn.pack()

  def back2(self):
    mainscreen = MainScreen()
    self.screen2.destroy()

  def pressed2(self):
    addName2 = self.getName2.get()
    joinTeam = self.getTeam.get()

    for s,t in itertools.product(allStudentlist, allTeamlist):
      if s.student_name == addName2 and t.team == joinTeam:
        if joinTeam not in s.studentTeamlist:
          s.addtoTeam(joinTeam) 
          messagebox.showinfo("Success", "Successful! ADDED")
        elif joinTeam in s.studentTeamlist:
          messagebox.showerror("Error", "Student Already in Team")


如何解决此错误


编辑:使用self.getTeam=tk.StringVar()更新了代码。

正如建议的那样,您可以从外部获得joinTeam变量,它是一个字符串。 因此,在将其用作团队对象之前,您必须找到此对象。如果s.student\u name==addName2和t.team==joinTeam:那么现在t-是具有joinTeam名称的团队的团队对象。只要改变一下:

s.addtoTeam(joinTeam)


看起来“joinTeam”变量的类型为“str”,您可以添加“print(type(joinTeam))”来确认这一点,并查看它返回“str”而不是“Team”的原因。能否提供self.getTeam初始化位置的代码?看起来self.getTeam.get()返回字符串而不是团队类object@YakovlevDenis补充
s.addtoTeam(t)