2014-09-12 3 views
-1

Я хотел бы знать, где я отстающих, Ищу ваши советы ..__init __() принимает ровно 2 аргумента (1 данный)?

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

'Student_Record()' .. забыл передать аргумент (для 's'). Или, может быть, у одного параметра слишком много? Кроме того, 'rec.Student_details (self)' неверно, поскольку Python * автоматически * предоставляет параметр 'self' для методов. – user2864740

+0

Код показывает, что необходимо использовать основы Python: кроме ошибки, необходимо настроить логику самой программы – Don

+0

Возможный дубликат [class \ _ \ _ init \ _ \ _() принимает ровно 2 аргумента (1 данный) ] (http://stackoverflow.com/questions/24599253/class-init-takes-exactly-2-arguments-1-given) – dbliss

ответ

4

Ваш метод Student_Record.__init__() принимает два аргумента: self и s. self предоставляется вам Python, но вы не смогли предоставить 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. Вам не нужно передавать его вручную, и в вашем случае имя даже не определено в этой области.

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, потому что он был инициализирован.

0

Ваш код должен быть, как это .. (питон отступа):

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 в должен иметь значение по умолчанию, или вы можете передать значение из rec=Student_Record().