我已经定义了这样一个类:
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
然后传递给他们的是什么意思?
答案 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