2015-03-06 3 views
-1
import os 
class sortare: 
    dictionar = raw_input("Scrie calea catre director: ") 
    lista = lista.os.listdir(dicionar) 
    def __init__(self): 
     for item in lista: 
      print item 
      print len(item) 

Я изучаю python, и я создаю класс, который перечисляет файл/директорию на директоре.Ошибка записи директора Python, класс

Где не так?

+0

Трудно сказать, не видя весь ваш код, но, как правило, вы должны поместить _все_ код инициализации класса внутри '__init__ 'метод. Строки 'dictionar =' и 'lista =' могут быть не в том месте. – Kevin

+0

Я пытаюсь использовать метод diferit, но я не знаю верный метод класса (работающий учиться), i tri в этом режиме: http://pastebin.com/hku285qV –

+0

Обычно вы не должны возвращать значение внутри 'for 'loop, так как это приводит к немедленному завершению цикла. И в любом случае вам не разрешается вообще ничего возвращать из метода '__init__'. Почему бы не попробовать использовать регулярную функцию вместо класса? – Kevin

ответ

0
import os 

class sortare: 
    def __init__(self): 
     dictionar = raw_input("Scrie calea catre director: ") 
     lista = lista.os.listdir(dicionar) 
     for item in lista: 
      print item 
      print len(item) 

sortare_object = sortare() 

Вы создали класс. Чтобы запустить метод __init__, вам нужно создать объект этого класса. Вот почему я добавил линию sortare_object = sortare().

0

Прежде всего, ошибка, которую вы делаете, - это различие в имени переменной, сначала вы использовали «dictionar», а затем использовали «dicionar», используя любой из них.

Кроме того, я думаю, этот вопрос вы столкнулись в том, что переменные внутри класса не являются глобальными, чтобы решить этот вопрос, что вы можете сделать, это объявить переменные как глобальные, как показано ниже:

import os 
    class sortare: 
     global dictionar, lista 
     dictionar = raw_input("Scrie calea catre director: ") 
     lista = os.listdir(dictionar) 
     def __init__(self): 

      lista = os.listdir(dictionar) 
      for item in lista: 
       print item 
       print len(item) 

Но это неправильный способ написания кода, вы должны либо запросить входной аргумент снаружи, а затем передать только «lista» в качестве аргументов функции, или вы можете добавить как запрашивающий ввод, так и вычисление списка в init.

Метод 1:

import os 
    class sortare: 

     def __init__(self, lista): 

      for item in lista: 
       print item 
       print len(item) 


    dictionar = raw_input("Scrie calea catre director: ") 
    lista = os.listdir(dictionar) 
    sortare(lista) 

Метод 2:

import os 
    class sortare: 


     def __init__(self): 
      dictionar = raw_input("Scrie calea catre director: ") 
      lista = os.listdir(dictionar) 
      for item in lista: 
       print item 
       print len(item) 

    sortare(lista)