|
2 / 2 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
||||||
Как описать свойство в классе?26.05.2015, 13:27. Показов 1276. Ответов 18
Метки нет (Все метки)
Доброго времени суток, джентельмены!
Проблема в следующем: Как-то одним прекрасным утром я решил попробовать создать класс с описанием кнопки (Tk) ибо надоело каждый раз писать один и тот-же елемент (в больших проектах). И с ужасом понял шо не могу этого сделать. Максимум чего я добился это наследование
однако, при любой попытке описать свойства кнопки либо вылетает ошибка либо ничего не меняется подскажите плиз как прописать свойства желателен пример хотябы с одним text='yehhu', например, заранее признателен. P.S. в гугле не забанен, ничего не нашел по крайне мере на русском единственное дельное описание встретилось вот тут http://pythonworld.ru/osnovy/i... rfizm.html и вот тут http://habrahabr.ru/post/145835/
0
|
||||||
| 26.05.2015, 13:27 | |
|
Ответы с готовыми решениями:
18
Описать свойство в классе Как удалить свойство в классе Как изменить свойство класса, находясь в другом классе? |
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||||||
| 26.05.2015, 14:15 | ||||||
|
Основная идея, что все виджеты, которые у тебя всегда присутствуют в окне ты выносишь в базовый класс, а в дочернем можешь добавлять новые или переопределять базовые и т д
Ну грубо говоря это выглядит так:
1
|
||||||
|
2 / 2 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
|
| 27.05.2015, 12:33 [ТС] | |
|
спасибо большое
![]() однако есть еще пара вопросов: 1 обязательно-ли наследование от своего класса? тоесть если попытаться сразу наследовать от tkintera то ничего не выйдет? или выйдет ![]() 2 в чем смысл кода который Вы описали в ините первого класса 3 почему г?)) 4 что можно рассмотреть как альтернативу?)) у меня третья ветка питона, хотя и на второй было раньше пару проектов, но тамошняя компиляция в екзе меня просто убивала)
0
|
|
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|||||||||||
| 27.05.2015, 13:00 | |||||||||||
Сообщение было отмечено Glebmanager@mai как решение
РешениеВообще я не понял смысла твоего вопроса, потому что он абсурден. Ты же сам написал, что не хочешь одно и тоже много раз подряд.
- запустив приложение на другой платформе увидишь, что виджеты "поплывут" (что-то вроде лишних отступов) и получится, что приложение будет выглядеть не как задумано, нужно для одной платформы виджеты одних размеров создавать, для другой других и т д - менеджеры компановки убогие (привет предыдущий минус), то есть если ты захочешь сделать окно, виджеты которого будут перестраиваться в зависимости от размера окна, то это тебе надо будет писать самому. В pyqt это из коробки на пример. Растягиеваешь окно виджеты растягиваются, перемещаются и т д - нету кучи виджетов, которые вроде как должны были-бы быть в стандартном наборе (например виджет для отображения времени). Будешь все это писать сам. - куцый функционал по сравнению с нормальными библиотеками типа pyqt. в общем и так далее и тому подобное P.S Я сначала начинал с tkinter, но вдоволь написавшись велосипедов и потратив кучу времени решил, что это "удовольствие" не для меня.
1
|
|||||||||||
|
2 / 2 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
||
| 27.05.2015, 13:26 [ТС] | ||
|
Вот теперь все понятно
спасибо, реально спасибо что не пожалел времени и знаний ![]() ну в моем случае для кросплатфоремнности еще ОЧЕНЬ далеко, но pyqt обязательно начну изучать ![]() ![]() и еще раз спасибо за расшифровку скрипта
0
|
||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||
| 27.05.2015, 13:27 | ||
|
1
|
||
|
2 / 2 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
||||||
| 01.06.2015, 12:47 [ТС] | ||||||
|
Вобщем благодаря alex925 таки сделал что хотел. Оказалось что наследовать свой класс от родительского вовсе не необходимо. Моя ошибка заключалась в том что я не передал необходимый аргумент root при создании класса и не указал его при создании объекта класса. Вобщем итоговой код выглядит вот так:
Вобщем вот... мож кому пригодится ![]() А вобще pyqt выглядит многообещающе но я еще только в процессе его курения однако даже на данной стадии могу посоветовать отсальным тож переходить на него
0
|
||||||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||||
| 01.06.2015, 18:41 | ||||
|
Мой код идеологически правильный (в отношении использования классов вообще) и практически правильный, а ты просто запихнул создание кнопки в класс причем не понятно зачем. Добавлено через 3 минуты Glebmanager@mai, тебе нужно почитать про использование классов и их базовые концепции (инкапсуляция, полиморфизм и наследование). Очень советую тебе про это почитать. Основы можно прочесть у Лутца в книге Изучаем python.
0
|
||||
|
2 / 2 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
|
| 02.06.2015, 10:10 [ТС] | |
|
1 а что собственно ужасного?) работает? работает, компилируется? компилируется))) не вижу ничего особо страшного
![]() 2 как это не несет? я-же писал что меня заколебало для каждого отдельного окна создавать свою кнопку и свое событие это очень неудобно и много лишних буков получается. А теперь у меня есть класс который я могу вызвать в любом месте всего одной строчкой, помоему это совсем не лишено смысла 3 Ну у меня возник вопрос, я его решил решение написал для людей которые сталкиваются с аналогичными проблемами (ибо я когда гуглил ни нашел НИ ОДНОГО примера с работоспособными классами-виджетами, может плохо гуглил конешн, но все-же) и яж не говорю что мое решение суперправильное и единственно верное, я говорю что оно компактное и работает, а это правда, не обижайся но код предложенный тобой очень громоздкий а в данной ситуации я не вижу смысла огрод городить, это кстати вполне сочетается с дзеном Питона, разве нет?) 4 Лутца я начинал читать когда-то но что-то не вкатило, мне проще читать посты на хабре на соответствующие темы, главу про классы посмотрю. 5 критикуете - объясняйте давайте детально чем код плох а не абстрактно "по всем параметрам ужасен" надоже-жь мне понять почему я бездарен
0
|
|
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||||||||||||
| 02.06.2015, 12:00 | ||||||||||||
|
Я опишу в кратце, но не уверен, что ты все поймёшь. 1. Создание класса это ресурсоёмкая операция и если класс крохотный как у тебя (так ты ещё и не используешь основные принципы классов, об этом ниже). Все это делает лишает этот код смысла, так ещё и делает его не оптимальным. P.S про маленькие классы кстати есть статья на хабре ("Прекратите создавать микро классы" примерно так называется) 2. Как я уже говорил в первом посте, ты не используешь у себя ни наследование, ни полиморфизм, ни инкапсуляцию + явно видно, что ты не понимаешь, что класс это "фабрика объектов" + не понимаешь в чем фишка работы с объектами (я про поведение объекта, которое можно подгонять под себя с помощью (наследования, инкапсуляции и полиморфизма) и использования магических методов) У тебя код, просто в функциональном стиле (Да и он страдает. Вкладывать объявление функции в другую в данном случае ни к чему.) На данный момент могу тебе только ещё раз посоветовать прочитать про концепции ООП и раз ты "упорствуешь в своём невежестве", то хотя бы переписать этот код в чисто функциональном стиле. Чтобы это выглядело примерно так:
0
|
||||||||||||
|
2 / 2 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
|
| 02.06.2015, 12:33 [ТС] | |
|
1 у него очень много теории а мне больше понятно на практике, сейчас вот начал читать его статью про классы, не увидел ничего нового лишь теория-теория-теория. ну может дальше будет что поинтереснее
2 я нескромно оцениваю свои знания о питоне на троечку из 5-ти в последнее время просто больше веб направлением занимался граб селениум и тд.... но решил что пришла таки пора осваивать классы ибо без их знания программирование не программирование а так детский садик ![]() 3 я насколько я понимаю класс - это некий макет твоего объекта например нужно тебе часто создавать один и тот-же объект с незначительными изменениями то лепишь макет а при вызове изменяешь параметры которые нужны ну и методы вызываешь только те которые нужны как-то так вобще у меня есть пара "классов" для больших объектов, но они настолько ущербны что просто ужас, мне их даже выкладывать стыдно, вот я и решил на примере маленького класса научиться создавать нормальные. у меня была идея сделать все через def-ы, их я люблю и понимаю, вобще в последнее время пишу все через них, но это-бы не приблизило меня к пониманию классов а постигнуть их таки хочется ![]() 4 про ресурсоемкость тут ты конешн прав но с сегодняшним железом это не есть проблема темболее для скромного любителя вроде меня у меня скромные запросы ![]() 5 статью читал еще когда пытался сам разобраться, насколько я помню там имелось ввиду что нет смысла писать класс и вызывать его 1 раз за всю прогу, хотя после твоих ответов я понимаю иной смысл ![]() 6 вобщем почитаем будем бороться с невежеством надо-же как-то осваивать тему я еще напишу сюда как будут вопросы) а они точно появятся
0
|
|
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||||
| 02.06.2015, 12:53 | ||||
|
0
|
||||
|
2 / 2 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
||
| 05.06.2015, 15:40 [ТС] | ||
|
0
|
||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||||||||
| 05.06.2015, 15:59 | ||||||||
1
|
||||||||
|
2 / 2 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
||
| 05.06.2015, 16:04 [ТС] | ||
|
получается это при наследовании уже когда создаем экземпляр, а именно заранее объявить ну условно чтобы ВСЕ РАМКИ были зелеными
0
|
||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
| 05.06.2015, 16:08 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
||
| 05.06.2015, 16:22 [ТС] | ||
|
0
|
||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||||||||
| 05.06.2015, 16:30 | ||||||||
Сообщение было отмечено Glebmanager@mai как решение
Решение
1
|
||||||||
|
2 / 2 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
||
| 05.06.2015, 16:33 [ТС] | ||
ясно спасибо ![]() думаю это не последний мой глупый вопрос
0
|
||
| 05.06.2015, 16:33 | |
|
Помогаю со студенческими работами здесь
19
Как описать struct в классе? Dictionary: как правильно описать свойство set {} Как можно описать массив и переменные в классе? Как описать свой класс в своём классе? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|