Как я могу использовать переменную между двумя методами в классе? - PullRequest
0 голосов
/ 11 января 2019

Я делаю рандомизированную сортировку в python, и я не могу использовать переменную self.fileName из метода __init__ в моем методе шифрования. Я не уверен почему.

Я пытался полностью заменить «я» на «fn», но само «я» не определено. Я пытался использовать (self, fn), но нет ничего, что соответствовало бы параметру self.

class randomsort:
    def __init__(self,fn):
        self.fileName = fn
        print(self.fileName)

    def scramble(self):
        tempList =[]
        for i in self.fileName:
            ran = random.randrange(0,len(self.fileName))
            tempList.append(self.fileName[ran])
        print("-->",tempList)
        self.fileName = tempList

exlist = [1,2,3,4,5,6,7,8,9,10]
randomsort.scramble(exlist)

Ожидаемый вывод - несортированная версия списка, но вывод:

AttributeError: у объекта 'list' нет атрибута 'fileName'

1 Ответ

0 голосов
/ 11 января 2019

Проблема в том, что вы не создаете экземпляр класса (т.е. вы ничего не отправляете в метод __init__, только scramble получает exlist), и, следовательно, self.fileName никогда не определяется. Вместо этого вы должны сделать:

c = randomsort(exlist) # Create an instance of the object
c.scramble() # Call method scramble of instance c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...