-4

我已经定义了一个这样的类:

class classname:
    def funname(self,idno,door):
        self.idno = 120
        self.door = 150

然后,创建了一个对象:

obj = classname()

像这样访问该对象(obj)的变量obj.funname()时,出现错误:

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

但是,obj.funname(4,5)工作正常

我已经为类中的变量赋值。那我为什么要再次传递论点呢?即使我传递了值,值也不会改变。

>>>obj.idno
120
>>>obj.door
150

那么通过它们又有什么意义呢?

4

3 回答 3

3

我认为您想要的是创建一个__init__函数来传递您的 idno 和门,例如:

def __init__(self, idno, door):
    self.idno = idno
    self.door = door

现在,当您创建一个新对象时,您将传入这些值并将它们存储起来:

foo = classname(120, 150)

然后稍后在某些功能中您可以访问它们:

def printStuff(self):
    print("My idno is {} and my door is {}".format(self.idno, self.door))

并且喜欢:

foo.printStuff()

这将输出:

"My idno is 120 and my dooor is 150"
于 2013-10-21T21:03:40.107 回答
2

您需要使用可选参数或删除它们。

class classname:
   def funname(self, idno = 120, door = 150):
      self.idno = idno
      self.door = door

或者

class classname:
   def funname(self):
      self.idno = 120
      self.door = 150
于 2013-10-21T21:02:46.450 回答
1

如果您想始终设置这些值,请执行以下操作:

class ClassName:
    def funname(self):
        self.idno = 120
        self.door = 150

现在,如果您想要使用默认值,请执行以下操作:

class ClassName:
    def funname(self, idno=120, door=150):
        self.idno = idno
        self.door = door
于 2013-10-21T21:07:32.713 回答