【发布时间】:2016-10-10 16:44:51
【问题描述】:
我正在研究课程是如何运作的,并且我想出了如何让课程在一些场景中运作。但我找不到让我的场景发挥作用的方法。它涉及class Function():、def __init__(self):和def AnotherFunction(self, Foo):。在我的场景中,这些不是实际的“功能”,但是它们非常相似。这是我的代码:
class Name():
def __init__(self, Name):
self.Name = ["Your Dicer's name is: "]
self.AddName()
def AddName(self):
self.Count = 1
while(self.Input == 1):
Input = input("What is your Dicer's name?:\n")
if(any(BadWord in Input.lower() for BadWord in [])):
print("That's an inappropriate name! Try again")
elif(len(Input) < 3):
print("That name is too short! Try again.")
elif(len(Input) > 16):
print("That name is too long! Try again.")
else:
self.Count -= 1
self.Name.append(Input)
我的问题是,为什么while loop 不会出现在class 中?我尝试查找其他堆栈溢出问题、课程文章和教程,以及其他与 while 循环相关的问题,但无济于事。你能告诉我为什么它不会运行以及如何解决这个问题吗?我会很感激的。谢谢! :)
更新 1:我将 Input 放入了 AddName parameters。我还添加了Name 作为instance。但这些更新不起作用。
更新 2:我从 AddName parameters 中删除了 Input。我还将self.Input 更改为self.Count,所以它不会让人感到困惑。我还将self.Name += Input 更改为self.Name.append(Input)。这些更新使代码更易于理解并修复了一些问题,但while loop 无法运行。
【问题讨论】:
-
您在没有所需参数的情况下调用您的函数 (
self.AddName()),或者为参数Input提供一个参数,或者将函数定义更改为def AddName(self): ...。 -
如果您通过调用构造函数
x = Name()创建Name的实例,则会引发TypeError,因为AddName接受了一个您没有提供的参数,所以我假设问题是你永远不会创建实例。 -
@Jim 这两个建议都不起作用
-
@TadhgMcDonald 我为
AddName输入了一个参数Input,但什么也没发生。 -
让我将上述评论的重要部分加粗:“如果您 通过调用构造函数
x = Name()创建 Name 的实例,它将引发 TypeError,因为 AddName 需要一个你没有给出它的论点,所以我假设问题是你从不创建实例。“除非你调用它们,否则你编写的函数不会执行,在这种情况下__init__当你实例化你的类时被调用。
标签: python class while-loop user-input python-3.5