为什么会出现此错误?有人可以为我解决这个问题吗?我试图从 Progress.display()
中的类项目中调用显示函数,或者有人有其他关于如何显示用户输入的解决方案?
以及如何同时输入 Stages 类和 Progress 类?谢谢你的帮助
超级().显示()
RuntimeError: super(): 没有参数
这是代码
class Project:
def __init__(self, name="", job="", **kwargs):
super().__init__(**kwargs)
self.name = name
self.job = job
def display():
print("name: ", (self.name))
print("job: ", (self.job))
@staticmethod
def prompt_init():
return dict(name=input("name: "), job=input("job: "))
class Stages(Project):
def __init__(self, stages="", **kwargs):
super().__init__(**kwargs)
self.stages = stages
def display(self):
super().display()
print("stages: ", (self.stages))
@staticmethod
def prompt_init():
parent_init = Project.prompt_init()
choice = None
while choice not in (1, 2, 3, 4, 5, 6):
print("Insert your stage now: ")
print("1. Planning")
print("2. Analysis")
print("3. Design")
print("4. Implementation")
print("5. Testing")
print("6. Release")
choice = input("enter your choice: ")
choice = int(choice)
if choice == 1:
stages = "Planning"
elif choice == 2:
stages = "Analysis"
elif choice == 3:
stages = "Design"
elif choice == 4:
stages = "Implementation"
elif choice == 5:
stages = "Testing"
elif choice == 6:
stages = "Release"
else:
print("no such input, please try again")
print(name)
print(stages)
class Progress(Project):
def __init__(self, progress="", **kwargs):
super().__init__(**kwargs)
self.progress = progress
def display(self):
super().display()
print("progress: ", (self.progress))
@staticmethod
def prompt_init():
parent_init = Project.prompt_init()
choice = None
while choice not in (1, 2, 3, 4):
print("1. 25%")
print("2. 50%")
print("3. 75%")
print("4. 100%")
choice = input("enter your choice[1-4]: ")
choice = int(choice)
if choice == 1:
progress = "25%"
elif choice == 2:
progress = "50%"
elif choice == 3:
progress = "75%"
elif choice == 4:
progress = "100%"
else:
print("no such input, please try again")
print(progress)
parent_init.update({"progress": progress})
return parent_init
class A(Stages, Progress):
def prompt_init():
init = Stages.prompt_init()
init.update(Progress.prompt_init())
return init
prompt_init = staticmethod(prompt_init)
class New:
type_map = {("stages", "progress"): A}
def add_project_test(self, name, job, stages):
init_args = Project.prompt_init()
self.project_list.append(Project(**init_args))
def __init__(self):
self.project_list = []
def display_project():
for project in self.project_list:
project.display()
print()
def add_progress(self):
init_args = Progress.prompt_init()
self.project_list.append(Progress(**init_args))
def add_project(self):
ProjectClass = self.type_map[A]
init_args = ProjectClass.prompt_init()
self.property_list.append(ProjectClass(**init_args))
my_list = New()
my_list.add_progress()
my_list.display_project()
原文由 Justin Junias 发布,翻译遵循 CC BY-SA 4.0 许可协议
每次在方法中使用super(),都需要在实例方法或类方法中。您的
staticmethod
不知道它们的超类是什么。观察:输出:
这是您的代码,经过调试并具有一些额外的功能和测试: