2016-07-26 135 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')。如果没有参数,构造函数不能知道'x'或'y'是什么 –

+0

但我想使用object1.enter()而不通过构造函数定义任何名称。 – sasan