У меня проблема с получением нужного вам результата. Я использую модуль (так называемый q3.py) с 3-х определенными классами: студент, модулем и регистрациями и реализацией его в другой файл со следующими деталями:TypeError: str принимает ровно 2 аргумента error
#testq3.py
from q3 import *
james = Student('james')
alice = Student('alice')
mary = Student('mary')
agm = Module('agm')
ipp = Module('ipp')
r = Registrations()
r.add(james,agm)
r.add(alice,agm)
r.add(alice,ipp)
mstr = ''
for m in map(str,r.modules(alice)):
mstr = mstr+' '+m
print(alice, 'is doing the following modules:', mstr)
sstr = ''
for s in map(str,r.students(agm)):
sstr = sstr+' '+s
print(agm, 'has the following students:', sstr)
print(r)
И тогда вот мой файл q3.py .. .
class Student:
'Class to define student details'
def __init__(self, name):
self.name = name
def __str__(self, name):
return (self.name)
def __iter__(self, name):
return iter(self.name)
class Module:
'Class to define module codes'
def __init__(self, modules):
self.modules = modules
def __str__(self, modules):
return self.modules
def __iter__(self, modules):
return iter(self.modules)
class Registrations():
'Class telling us what modules students are taking'
def __init__(self):
self.reglist = []
def add(self, students, modules):
self.reglist.append((students, modules))
def students(self, modules):
for x in self.reglist:
if x[1] == modules:
print x[0]
def modules(self, students):
for y in self.reglist:
if y[0] == students:
print y[1]
я получаю ошибки, такие как:
Traceback (most recent call last):
for m in map(str,r.modules(alice)):
File ".....", line 37, in modules
print y[1]
TypeError: __str__() takes exactly 2 arguments (1 given)
Поэтому я добавил в ул, а также ITER, так как я продолжал получать аргументы 2 итерационных ошибок. Где я иду не так? Я просто хочу, чтобы результат был таким же, как в нижней части testq3.py. Пожалуйста помоги?? Я уверен, что у меня много ошибок str/iter, но должно быть что-то еще, что мне не хватает, поскольку я не получаю нигде рядом с результатами, которые я хочу, несмотря на то, что играю с ним целую вечность. Любая помощь будет оценена!
Вы должны удалить свое редактирование, задающее второй вопрос, а затем задать второй вопрос в другом вопросе. Поскольку это прямо сейчас с вашим отредактированным вопросом, ваш заголовок не имеет смысла, и ответы не имеют смысла. Это считается плохой формой для этого ... просто задайте второй вопрос. – SethMMorton
Жаль, что я новичок и понятия не имел, я буду помнить о будущем. – user3078840