Создание класса для выравнивания списка Python - PullRequest
0 голосов
/ 27 ноября 2018

Я хочу создать класс для выравнивания списка Python.Я могу сделать это, определив функцию следующим образом:

liste=[[1,2],3,[4],[[5],6]]

flatLIST=[]

def recur(a):

    if (type(a)==list):
        for i in a:
           recur(i)
    else:
        flatLIST.append(a)

recur(liste)
flatLIST

[1, 2, 3, 4, 5, 6]

Но когда я не могу достичь этого, создав класс.

class flatYVZ():

    def __init__(self,liste):
        self.flatLIST=[]
        recur(liste)

    def recur(self,a):

        if (type(a)==list):
            for i in a:
                recur(i)
        else:
            self.flatLIST.append(a)

    def flatting(self):        
        self.sonuc=self.flatLIST

example=[[1,2],3,[4],[[5],6]]
objec=flatYVZ(example)
objec.sonuc

[]

1 Ответ

0 голосов
/ 27 ноября 2018

Вам нужно сослаться на self, иначе вы вызовете функцию, которую вы определили ранее, а не метод класса.

Здесь вам необходимо изменить recur(liste) на self.recur(liste) в __init__ и recur(i) на self.recur(i) в recur(self, a).

class flatYVZ():

    def __init__(self,liste):
        self.flatLIST=[]
        self.recur(liste)

    def recur(self,a):

        if (type(a)==list):
            for i in a:
                self.recur(i)
        else:
            self.flatLIST.append(a)

    def flatting(self):        
        self.sonuc=self.flatLIST

example=[[1,2],3,[4],[[5],6]]
objec=flatYVZ(example)
print(objec.flatLIST)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...