-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 に答える