python структурирует для файла - PullRequest
0 голосов
/ 20 апреля 2020

Это может быть вопрос новичка, но я немного новичок с python, поэтому вот что я пытаюсь сделать ...

Я использую python2 .7

Я хотел бы назначить путь к файлу в виде строки в dict в функции A, а затем вызвать этот dict в функции B.

Я смотрел на C подобные структуры в Python, чтобы попытаться использовать структуры без удачи, возможно, из-за отсутствия понимания ... Приведенный ниже пример является выдержкой из ссылки.

Я также взглянул на Что такое метаклассы в Python? , но я не уверен, понимаю ли я и метаклассы.

Итак, как бы я назвал назначенные параметры в functionaA, внутри frunctionB, такие как:

class cstruct:
    path1 = ""
    path2 = ""
    path3 = ""


def functionA():
   path_to_a_file1 = os.path.join("/some/path/", "filename1.txt")
   path_to_a_file2 = os.path.join("/some/path/", "filename2.txt")
   path_to_a_file3 = os.path.join("/some/path/", "filename3.txt")

   obj = cstruct()
   obj.path1 = path_to_a_file1
   obj.path2 = path_to_a_file2
   obj.path3 = path_to_a_file3

   print("testing string here: ", obj.path1)
      # returns the path correctly here



# this is where things fall apart and the print doesn't return the string that I've tested with print(type(obj.path))
def functionB():
   obj = cstructs()
   print(obj.path1)
   print(obj.path2)
   print(obj.path3)

   print(type(obj.path))
      # returns <type 'str'>, which is what i want, but no path


Правильно ли я передаю параметры для путей? Если нет, то может кто-нибудь сообщить мне, как правильно передать полученную строку?

Спасибо!

1 Ответ

0 голосов
/ 20 апреля 2020

Вам нужно сделать что-то вроде этого:

class Paths:
    def __init__(self, path1, path2, path3):
        self.path1 = path1
        self.path2 = path2
        self.path3 = path3

def functionA():
    path_to_a_file1 = os.path.join("/some/path/", "filename1.txt")
    path_to_a_file2 = os.path.join("/some/path/", "filename2.txt")
    path_to_a_file3 = os.path.join("/some/path/", "filename3.txt")

    obj = Paths(path_to_a_file1, path_to_a_file2, path_to_a_file3)
    return obj

def functionB(paths): # should take a parameter
   # obj = cstructs() don't do this! This would create a *new empty object*
   print(paths.path1)
   print(paths.path2)
   print(paths.path3)

   print(type(paths.path))


paths = functionA()
functionB(paths) # pass the argument

В любом случае, вы действительно должны найти время, чтобы прочитать официальный учебник по классам . И вы действительно должны использовать Python 3 , Python 2 прошло его конец жизни.

...