2016-11-02 5 views
0

私は構成の関係を使用しようとしましたが、複合クラスAにアクセスできません: このコードでクラスAのリストにオブジェクトを追加しようとしていますB.インスタンスの属性にアクセスできません

class B: 
    def __init__(self,X,Y,Z): 
     self.X 
     self.Y 
     self.Z 
    def Xreturner(self): 
     return self.X 
    def Yreturner(self): 
     return self.Y 
    def Zreturner(self): 
     return self.Z 

class A: 
    def __init(self): 
     self.lst=[[1,2,3],[3,4,5],] 
     self.b=B() 
    def add(self): # trying to add b object to the list 
     self.lst.append(self.b) 
#### TEST#### 
objA=A() 
objA.add(6,7,8) 

私はこのエラーを取得するテスト:この問題を解決するために

Traceback (most recent call last): 
    File "home/testXYZ.py", line 28, in <module> 
    objA.add(6,7,8) 
TypeError: add() takes exactly 1 argument (4 given) 

私を助けてください。 B__init__方法で

+0

... 'self'を取るメソッドを書いたときに、3つの引数(プラス暗黙の' self')で 'objA.add'を呼び出そうとしています。あなたは何について混乱していますか? (あなたのコードには他にもいくつかのエラーがあります) – kindall

+1

あなたのエラーは 'def add(self)'が1つの引数しか取らず、4つ与えようとしたことを伝えています。その関数内の数字のリストまたは3つの余分な変数。プラスあなたのコードには他のエラーがあります。 – MooingRawr

+1

@kiran元のポスター(OP)の意図を編集したり、変更したりしないでください。 –

答えて

0

まず、あなたのクラスB初期化子が正しくありません:。

class B: 
    def __init__(self, x, y, z): # <== should use snake_case for vars 
     self.x = x 
     self.y = y 
     self.z = z 

次に、あなたのクラスAアドオンは、新しいBオブジェクトを作成し、リストに追加する必要があります:

+0

問題を解決してくれてありがとう – BORUSSEN11

1
  • 声明self.Xは何もしません。 self.X = Xとする必要があります。
  • パラメータをadd()に渡していますが、パラメータは使用しません。たぶん、あなたはX__init__のためのいくつかを持っているのと同じ方法で(パラメータを追加します。
  • たぶん、あなたもA__init__に(代わりのAにパラメータを渡したい)。そして、あなたがのコンストラクタにそれらを渡すことができますB
関連する問題