Принимает 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'}]