Примечание:
Вы импортируете модуль INIT_SCTFT
, а затем назначаете first
этому модулю.Теперь первым является модуль (вы можете проверить по типу печати (первый). first.main()
выполнит основную функцию из INIT_SCTFT
. Все, что делает главное - это создание объекта и изменение текущего каталога. Затем он заканчивается.
Затем first.DirectorySetup.Clean_data_dir
попытайтесь вызвать Clean_data_dir
из класса DirectorySetup
. Но класс DirectorySetup
не определил Clean_data_dir
! У объекта класса DirectorySetup
есть этот атрибут. Поэтому, если вы хотите получить к нему доступатрибут, вы должны сначала создать объект.
Например:
obj = first.DirectorySetup()
obj.Clean_data_dir
РЕДАКТИРОВАТЬ:
Чтобы ответить на ваш вопрос из комментария. Этозависит от того, чего вы хотите достичь. Например, вы можете создать некоторый метод, который будет возвращать список объектов.
class DirectorySetup:
'''The directory paths for the program'''
def __init__(self):
self.cwd = os.getcwd()
self.Raw_data_dir= self.cwd + '\Raw_data'
self.Clean_data_dir= self.cwd + '\Clean_data'
self.table_dir= self.cwd + '\Tables'
def create_objects():
one = DirectorySetup()
two = DirectorySetup()
three = DirectorySetup()
return one, two, three
Затем в final.py вы можете создать список объектов: objects = first.create_objects()
Или какВы упомянули, что можете обернуть его в некоторый класс:
class my_objects:
one = DirectorySetup()
two = DirectorySetup()
three = DirectorySetup()
Затем в final.py вы получите к нему доступ: first.my_objects.one
. Также обратите внимание, что если вы решите поместить объекты в init:
class my_objects:
def __init__():
one = DirectorySetup()
two = DirectorySetup()
three = DirectorySetup()
Тогда сначала вам нужно будет создать объект этого класса, чтобы получить доступ к нему.ose переменные obj = first.my_objects()
, тогда вы можете использовать его: obj.one
.