python中的类和对象

2024-04-27 04:32:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我定义了这样一个类:

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

那么传递它们又有什么意义呢?你知道吗


Tags: 对象selfobj定义def错误argumentsclass
3条回答

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

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

我认为您需要创建一个__init__函数来传入您的idno和door,比如:

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"

您需要使用可选参数或删除它们。你知道吗

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

相关问题 更多 >