2017-01-27 10 views
0

私は以下のクラスがあります。同じクラス内のクラスのインスタンスを作成し、パラメータとして同じクラスを使用

inicial = state(None,None,[1,2,5,3,4,0,6,7,8]) 
:私は通常、次のようにクラスのインスタンスを作成

class state(list): 
    def __init__(self,parent = None, path = None, *args): 
     list.__init__(self, *args) 
     self.n = len(self) 
     self.parent = parent 
     self.path = path 

    def neighbors(self): 
     lista = [] 
     if self.__hasUp(): 
      lista.append(state(Self,'Up',self.__swap(self.index(0),self.index(0) - 3))))    
     if self.__hasDown(): 
      lista.append(state(Self,'Down',self.__swap(self.index(0),self.index(0) + 3)))) 
     if self.__hasLeft(): 
      lista.append(state(Self,'Left',self.__swap(self.index(0),self.index(0) - 1)))) 
     if self.__hasRight(): 
      lista.append(state(Self,'Right',self.__swap(self.index(0),self.index(0) + 1)))) 

     return lista 

私は(私は私がやっているものの全体の文脈を置けば、それはmissleadingになると思う)followinを実行する必要があります。

anotherList = [] 
for neighbor in inicial.neighbors(): 
    anotherList.append(neighbor) 

I J余分な属性とメソッドをほとんど持たないリストが必要です。問題は、ネイバーズメソッドのパラメータとしてそれらを作成しているオブジェクトとの間に、それ自身のイッセンスを作成するためにこのクラスが必要なことです。私はコード内のすべてのメソッドをtestetで参照していますが、期待どおりに動作しますが、この質問には必要ないと思うので、本当に長い質問になります。

私もこれをチェックしましたDeclaring a class with an instance of it inside in Python,Create static instances of a class inside said class in Python、これはClass constructor able to init with an instance of the same class objectです。しかし、私はまだそれを理解していない:(

を私はあなたが何か提案を持っているので、もし、彼らはすべての歓迎、かなり素人午前;)

+0

、私は注意することが重要であると考え。 – krysopath

答えて

0

私はsorry..Iが試したし、それはそれは判明しています非常に簡単です。それは単に奇妙なことから間違いだった。私は誰かがそれを必要とする場合に備えて答えを残しますが、私がそれを削除することを提案すれば(それは可能ですか?)私はそれを行います。あなたは、これはあなたのOPへの解決策ではないながら、collections` `から` UserList`をサブクラス化する場合があります

class test(list): 
    def __init__(self,pa, name, *args): 
     list.__init__(self, *args) 
     self.name = name 
     self.par = pa 

    def create(self): 
     lista = [] 
     lista.append(test(self,'a',[0,1])) 
     lista.append(test(self,'b',[0,2])) 
     return lista 

敬具、

関連する問題