Принимает 1 позиционный аргумент, но для dict выдается ошибка 2

как добавить два dict в список cs

Я хочу добавить два словаря в список cs в функции addcoursess, но она выдает ошибку Текстовая ошибка: принимает 1 позиционный аргумент, но было задано 2

Главный список:

    cs = [
    {
        "title": "Python",
        "teacher": "Amiri",
    },
    {
        "title": "HTML",
        "teacher": "Dehyami",
    },
    {
        "title": "PHP",
        "teacher": "Enayati"
    }
]


class User:
    def __init__(self, fisrtname, lastname):
        self.fname = fisrtname
        self.lname = lastname

    def fullname(self):
        print(f"my fullname is {self.fname} {self.lname}")

class Student(User):
    def __init__(self, fisrtname, lastname, email):
        super().__init__(fisrtname, lastname)
        self.email = email
        self.coursess = []

    def fullname(self):
        print("i am an student")
        super().fullname()

    def printcoursess(self):
        if self.coursess:
            for course in self.coursess:
                print("Coursess : " + course["title"])
        else:
            print("There is no course")

Вот класс, в котором это ошибка

class Teacher(User):
    def __init__(self, fisrtname, lastname, code):
        super().__init__(fisrtname, lastname)
        self.code = code

    def addcoursess(item):
        dict = {}
        dict.update(item)
        cs.append(dict)
        print(dict)
    def fullname(self):
        print("i am an teacher")
        super().fullname()


t1 = Teacher("abolfazl", "zaker", 3223)

добавьте сюда функцию addcoursess

t1.addcoursess({"title": "Java", "teacher": "ganjeali"})

print(cs)

У вас пропущен аргумент self в определении функции. Ваш класс учителя должен выглядеть следующим образом:

class Teacher(User):
    def __init__(self, fisrtname, lastname, code):
        super().__init__(fisrtname, lastname)
        self.code = code

    def addcoursess(self, item):
        dict = {}
        dict.update(item)
        cs.append(dict)
        print(dict)

    def fullname(self):
        print("i am an teacher")
        super().fullname()

Или, если вы не хотите передавать self, класс должен быть определен с помощью декоратора @staticmethod, например, так:

class Teacher(User):
        def __init__(self, fisrtname, lastname, code):
            super().__init__(fisrtname, lastname)
            self.code = code

        @staticmethod
        def addcoursess(item):
            dict = {}
            dict.update(item)
            cs.append(dict)
            print(dict)

        def fullname(self):
            print("i am an teacher")
            super().fullname()

Информация о статическом методе находится здесь: https://docs.python.org/3/library/functions.html#staticmethod

В ваших методах класса учителя отсутствует ключевое слово self. Оно должно выглядеть следующим образом

class Teacher(User):
def __init__(self, fisrtname, lastname, code):
    super().__init__(fisrtname, lastname)
    self.code = code

def addcoursess(self, item):
    dict = {}
    dict.update(item)
    cs.append(dict)
    print(dict)

def fullname(self):
    print("i am an teacher")
    super().fullname()

Вы забыли добавить self в метод addcoursess класса Teacher, должно быть addcourse(self,item):

Вот ваш полный рабочий код.

cs = [
    {
        "title": "Python",
        "teacher": "Amiri",
    },
    {
        "title": "HTML",
        "teacher": "Dehyami",
    },
    {
        "title": "PHP",
        "teacher": "Enayati"
    }
]


class User:
    def __init__(self, fisrtname, lastname):
        self.fname = fisrtname
        self.lname = lastname

    def fullname(self):
        print(f"my fullname is {self.fname} {self.lname}")

class Student(User):
    def __init__(self, fisrtname, lastname, email):
        super().__init__(fisrtname, lastname)
        self.email = email
        self.coursess = []

    def fullname(self):
        print("i am an student")
        super().fullname()

    def printcoursess(self):
        if self.coursess:
            for course in self.coursess:
                print("Coursess : " + course["title"])
        else:
            print("There is no course")

class Teacher(User):
    def __init__(self, fisrtname, lastname, code):
        super().__init__(fisrtname, lastname)
        self.code = code

    def addcoursess(self, item):
        dict = {}
        dict.update(item)
        cs.append(dict)
        print(dict)
    def fullname(self):
        print("i am an teacher")
        super().fullname()


t1 = Teacher("abolfazl", "zaker", 3223)

t1.addcoursess({"title": "Java", "teacher": "ganjeali"})

print(cs)

Вы забыли self в своей декларации

 def addcoursess(self, item):

Результат, полученный мной, следующий :

[{'teacher': 'Amiri', 'title': 'Python'}, {'teacher': 'Dehyami', 'title': 'HTML'}, {'teacher': 'Enayati', 'title': 'PHP'}, {'teacher': 'ganjeali', 'title': 'Java'}]
Вернуться на верх