Найти - Пользователи
Полная версия: Передать переменную из класса в класс
Начало » Python для новичков » Передать переменную из класса в класс
1 2
py.user.next
krisak
Приложение должно брать логин и пароль у пользователя, проверять на соответствие и подключение и если все хорошо, то мы должны иметь возможность изменять, обновлять данные и получать. Взаимодействуя с этими данными.

Вот из этого описания мы выделяем инструкции
krisak
должно брать логин и пароль у пользователя
должно проверять на соответствие
должно проверять на подключение
если все хорошо
должны получать данные
должны изменять данные
должны обновлять данные
Взаимодействуя с этими данными

Дальше каждую инструкцию мы начинаем разрабатывать отдельно от других инструкций (как будто их не было, нет и не будет)
krisak
должно брать логин и пароль у пользователя
Можно написать только эту часть и отладить её. Для этого надо написать функцию. Функция создаёт окно и методом рисует поля в этом окне. Прямо в отдельном скрипте это и пиши. Запускаешь скрипт, открывается окно, ты вводишь логин и пароль, введённые логин и пароль сохраняются в файл.

krisak
должно проверять на соответствие
Можно написать только эту часть и отладить её. Для этого надо написать функцию. Функция открывает файл, читает оттуда логин и пароль, проверяет их на соответствие и выводит результат во второй файл. Тут окон никаких не надо.

krisak
должно проверять на подключение
Можно написать только эту часть и отладить её. Для этого надо написать функцию. Функция открывает файл, читает оттуда логин и пароль, подключается с их помощью к серверу, получает ответ и выводит результат в третий файл. Тут окон никаких не надо.

krisak
если все хорошо
Можно написать только эту часть и отладить её. Для этого надо написать функцию. Функция открывает файл, берёт оттуда результат подключения к серверу, делает выводы о произведённом подключении (доклад, репорт) и выводит результат этих выводов в четвёртый файл. Тут окон никаких не надо.

krisak
должны получать данные
krisak
должны изменять данные
krisak
должны обновлять данные
Можно написать только эту часть и отладить её. Для этого надо написать функцию и объект. В объекте создаются операции в виде методов для каждого из этих действий отдельно. Функция создаёт объект, выполняет над этим объектом каждую операцию и результат каждой операции пишет в пятый файл. Тут окон никаких не надо.

krisak
Взаимодействуя с этими данными
Можно написать только эту часть и отладить её. Для этого надо написать функцию. Функция открывает файл, берёт оттуда данные и взаимодействует с этими данными с помощью других функций. Результат каждого такого взаимодействия пишет в шестой файл. Тут окон никаких не надо. Каждую вспомогательную функцию ты так же пишешь как отдельную часть и отлаживаешь её.

И когда у тебя всё эти части готовы, в виде нескольких отдельных и самостоятельных файлов .py, только тогда ты начинаешь их соединять в отдельный единый файл .py, чтобы собрать это всё воедино. Тогда у тебя там будет окно, которое правильно всё принимает; там будет код, который правильно всё проверяет; там будет код, который правильно всё преобразует; там будет код, который правильно всё сохраняет; там будет код, который правильно всё выводит в другое окно.

Я думаю, тебе не надо сильно заморачиваться с объектами, потому что делать их ты не умеешь. Старайся всё сделать на одних функциях и только. Это ты ещё сможешь потянуть, хотя это и не просто делать. Не надо думать, что функции - это для школоты только. Часто, наоборот получается, школота пишет всё на объектах и у них код работает хуже в сто раз, чем тот же код, написанный на одних функциях, но профессионалом.
krisak
py.user.next
Сейчас у меня все части работают отдельно, но вот в единое я не понимаю как объединить, а конкретно :

Данные отсюда
 def connad(self): # Подключение к AD
        self.AD_SERVER = 'vrtpdc.vrt.local'
        self.AD_USER = self.login_field.get()
        self.AD_PASSWORD = self.pw_field.get()
        self.AD_SEARCH_TREE = 'dc=vrt,dc=local'
        self.AD_SEARCH_OU = 'ou=USERS,ou=Bykovo,dc=vrt,local'
        self.server = Server(self.AD_SERVER, use_ssl=True)
        self.conn = Connection(self.server,user=self.AD_USER,password=self.AD_PASSWORD)
        print(self.conn.bind)
        if not self.conn.bind():
            print('Пидор')
        elif self.conn.bind():
            #print(self.conn)
            self.parent.switch_frame(Query)
        return self.conn

Передать сюда, чтобы выполнилась ф-ция которая обращается с подключением и выполняет действия.
 if not conn.entries:
            ad.conn.add(f'CN={famaly} {nameuser} {nameuser2}

Спасибо, что пытаетесь объяснить не знающему. Я понимаю, что я скорее всего все криво написал, что можно проще и лучше, но к этому надо прийти
krisak
xam1816
примерно так
Не совсем понял, чем это отличается от моего решения? У меня так же работает проверка логина и пароля и переход в другой фрейм, но чтобы выполнить действия во втором фрейме мне нужно, чтобы он выполнял установив соединения из первого фрейма. Тут я пока понять не могу как решить или может взять и все переписать. Отдельно друг от друга они работают великолепно.

Если я перенесу ф-ция
def connad(self):
в класс Query, то работает великолепно(заранее с внесенными данными).
ZerG
Ты продолжаешь пытаться трахнуть пчелу через дырку в скворечнике.

Создай отдельный класс для аутентификации и класс для главного окна!
Далее напииши код который выполняет класс аутентификации и если она успешна - запускает мейн окно если нет - пишет “Ландон Гудбай”
krisak
ZerG
Ты продолжаешь пытаться трахнуть пчелу через дырку в скворечнике.Создай отдельный класс для аутентификации и класс для главного окна!Далее напииши код который выполняет класс аутентификации и если она успешна - запускает мейн окно если нет - пишет “Ландон Гудбай”
А у меня разве не так? Точно так же, если аутентификация прошла, он запускает другое окно, если нет, сообщает об ошибке.
xam1816
krisak
класса Connectad def connad в Query def adoffice
Если по простому, то можешь объединить два своих класса в третьем, и они будут видны друг другу
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB