我不知道怎么了!这是一个非常简单的程序,我已经做了很多头部撞击!请有人指点我!在
这是CSE 111编程语言II课程的实验问题。他们在大学里教Java,我用Java编写的代码运行得很好。在
我只需要创建一个包含一些字段的Student类,用获取和设置属性的方法保存学生的基本信息。然后创建该类的实例并试用这些方法。
但每次运行此程序时,都会出现以下错误:
TypeError: set_name() takes exactly 1 positional argument (2 given)
这是我写的代码。在
^{pr2}$
Tags:
试试这个:
您需要将
self
作为第一个参数传递给类的每个成员函数。成员变量必须用self
引用,即self.name
。此外,您可能希望包含一个__init__()
函数;这通常用于初始化任何成员变量,并在类的实例化时调用。在请看这里的Python文档,以获得一些格式良好的类的示例:http://docs.python.org/tutorial/classes.html#random-remarks
您不接受对实例的引用作为该方法的第一个参数,即您的
set_name()
应该写入:这与其他语言有些不同,后者有一个内置关键字(例如
this
)来引用当前对象。Python显式地将该引用作为方法的参数传递。在所有其他方法都必须进行类似的修改。在
注意,只要设置
name = n
就设置了一个局部变量name
,该变量在方法结束时就消失了;它不会在实例上设置任何内容。如果需要实例属性,则必须显式设置self.name
。在另外,这是一个样式问题,但是通常不会用Python编写}方法。通常的做法是直接设置和获取属性。如果要验证值,请改用属性。所以基本上,你的方法中没有一个是必要的。在
set
和{但是,您没有
^{pr2}$__init__()
方法。通常在实例化类时传递实例所需的属性,并将这些属性保存在实例上。在相关问题 更多 >
编程相关推荐