python中的类和对象

时间:2013-10-21 20:58:10

标签: python python-2.7

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

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

然后传递给他们的是什么意思?

3 个答案:

答案 0 :(得分: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"

答案 1 :(得分:2)

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

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

OR

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

答案 2 :(得分: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