__init __()只需要2个参数(给定1个)?

时间:2014-09-12 09:37:07

标签: python

我想知道哪里滞后,寻找你的意见..

class Student_Record(object):

    def __init__(self,s):
        self.s="class_Library"
        print"Welcome!! take the benifit of the library"

    def Student_details(self):
        print " Please enter your details below"

a=raw_input("Enter your name :\n")
print ("your name is :" +a)
b=raw_input("Enter your USN :\n")
print ("Your USN is:" ,int(b))
c=raw_input("Enter your branch :\n")
print ("your entered baranch is" +c)
d=raw_input("Enter your current semester :\n")
print ("your in the semester",int(d))
rec=Student_Record()
rec.Student_details(self)

我收到此错误..

TypeError: init ()只需要2个参数(给定1个)

3 个答案:

答案 0 :(得分:4)

您的Student_Record.__init__()方法有两个参数,selfs。 Python为您提供了self,但您未能提供s

您完全忽略s,将其从函数签名中删除:

class Student_Record(object):
    def __init__(self):
        self.s = "class_Library"
        print"Welcome!! take the benifit of the library"

接下来,您正在调用传递参数的方法rec.Student_details(),但 方法只需要self,这是Python已经为您提供的。您不需要手动传递它,在您的情况下,甚至没有在该范围中定义名称。

答案 1 :(得分:0)

如果你这样做

class Student_Record(object):

    def __init__(self, s):
        self.s = ""

    def Student_details(self):
        print " Please enter your details below"

当你创建类Student_Record的对象时,它应该接受一个参数,尽管它本身(self)。所以它看起来像:

record = Student_Record("text")

并且在__init__中,您可以对传入的变量s执行任何操作。例如,self.s = s,您可以使用self.s在课程的任何位置调用它,因为它已初始化。

答案 2 :(得分:0)

你的代码应该是这样的..(python indent):

class Student_Record(object):

    def __init__(self,s="class_Library"):
        self.s=s
        print"Welcome!! take the benifit of the library"

    def Student_details(self):
        print " Please enter your details below"
        a=raw_input("Enter your name :\n")
        print ("your name is :" +a)
        b=raw_input("Enter your USN :\n")
        print ("Your USN is:" ,int(b))
        c=raw_input("Enter your branch :\n")
        print ("your entered baranch is" +c)
        d=raw_input("Enter your current semester :\n")
        print ("your in the semester",int(d))

rec=Student_Record()

rec.Student_details()
s中的{p> def __init__应该有默认值,或者您可以传递rec=Student_Record()的值。