2016-07-26 4 views
-9
class a(object): 
    def __init__(self,x,y): 
     self.name=x 
     self.family=y 
    def enter(self): 
     self.name=input("enter name=") 
     self.family=input("enter family=") 
    def show(self): 
     print("self.name",self.name,"enter family=",self.family) 

object=a('sam','salam') 
object.show() 


object1=a() 
object1.enter() 
object1.show() 

이 코드에는 이름과 성을 입력하고 싶습니다. o = a ('sam', 'salam')를 첫 번째 객체로 사용하면 문제가 없습니다. 두 번째 객체로 object1 = a()에 문제가 있습니다.이 Python 코드의 문제점은 무엇입니까?

object1=a() TypeError: init() missing 2 required positional arguments: 'x' and 'y'

이의 문제 무엇이며 어떻게하면 제거 할 수 있습니다 : 나는 실행하면, 내가받을? 감사합니다,

+3

'a'의 이름과 가족을 빼앗을 수는 없습니다. 너무 잔인합니다. –

+0

x 및 y에 대한 기본값을 설정해야합니다. –

+4

질문에 대해 더 자세한 설명이 포함 된 제목을 사용하십시오. "내 코드가 작동하지 않는 이유는 무엇입니까?"좋은 제목이 아닙니다. –

답변

0

난 당신의 코드를 실행하면 나는 다음과 같은 예외가 얻을 : 생성자에

인수 :

TypeError: __init__() takes exactly 3 arguments (1 given)

을 당신은 생성자에 xy 인수를 전달하거나 디폴트 값을 정의 할 수 있습니다 :

object1 = a("name", "family") 

기본값 :

class a(object): 
    def __init__(self, x="", y=""): 
    ... 
+0

예를 통해 좀 더 설명해주십시오. 나는 이해하지 못했다. – sasan

+1

당신은 당신이했던 것처럼 생성자를 통해 인수를 전달해야합니다 : object = a ('sam', 'salam'). args가 없으면 생성자는 'x'또는 'y'가 무엇인지 알 수 없습니다. –

+0

하지만 생성자를 통해 이름을 정의하지 않고 object1.enter()를 사용하고 싶습니다. – sasan

관련 문제