2017-01-27 4 views
0

У меня есть следующий класс:Создать экземпляр класса внутри одного класса и использовать один и тот же класс в качестве параметра

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 

я обычно создать экземпляр класса следующим образом:

inicial = state(None,None,[1,2,5,3,4,0,6,7,8]) 

мне нужно сделать followin (я думаю, что если я кладу весь контекст того, что я делаю, это будет missleading):

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

I J ust хочет иметь список с несколькими дополнительными атрибутами и методами. Проблема в том, что мне нужен этот класс для создания самих себя с объектом, который создает их как параметр в методе соседей. У меня есть 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

Вы могли бы хотеть подкласс '' UserList' из collections', в то время как это не решение вашей О.П., я счел важным отметить. – krysopath

ответ

0

Я sorry..I опробованы и получается, что очень просто. Это была просто ошибка от начала. Я оставляю ответ здесь, если кому-то это нужно, но если вы предлагаете удалить его (возможно ли это?), Я это сделаю.

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 

С наилучшими пожеланиями,