1 / 1 / 0
Регистрация: 25.03.2016
Сообщений: 13
|
|
1 | |
@classmethod и @staticmethod09.06.2016, 20:22. Показов 5323. Ответов 11
0
|
|
09.06.2016, 20:22 | |
Ответы с готовыми решениями:
11
Classmethod Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
2740 / 2343 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
|
|
09.06.2016, 20:42 | 2 |
http://python-3.ru/tag/Статиче... ы%20Python
Вообще это теория ООП, скачай учебник Марк Лутц Изучаем python и почитай его.
0
|
1 / 1 / 0
Регистрация: 25.03.2016
Сообщений: 13
|
|
09.06.2016, 20:45 [ТС] | 3 |
Я понимаю примерно что они делают, но мне нужен реальный код, где они используются.
0
|
2740 / 2343 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
|
|
09.06.2016, 20:46 | 4 |
![]() Решение
Страница 887
1
|
1 / 1 / 0
Регистрация: 25.03.2016
Сообщений: 13
|
|
09.06.2016, 20:54 [ТС] | 5 |
Спасибо) Обязательно прочту.
0
|
2740 / 2343 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
|
||||||
09.06.2016, 20:57 | 6 | |||||
0
|
1 / 1 / 0
Регистрация: 25.03.2016
Сообщений: 13
|
|
09.06.2016, 21:00 [ТС] | 7 |
Часто вы используете эти декораторы? Я знаю, что, например, с помощью @classmethod можно реализовать абстрактную фабрику.
0
|
2740 / 2343 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
|
|
09.06.2016, 21:03 | 8 |
Очень редко
1
|
21 / 21 / 2
Регистрация: 31.12.2015
Сообщений: 100
|
|
09.06.2016, 21:11 | 9 |
Предположим, есть класс А. В классе есть метод do().
Ты создаешь экземпляры А - а1, а2, а3. А этот метод - do() - по твоему замыслу вообще никак не отличается что в a1, что в a2, что в a3. Скажем, он всегда использует аргументы, не связанные с a1, a2, a3, (например, выводит на экран "Привет, мир" или еще что-то там делает). Проще говоря, итог один что при вызове a1.do(), что при вызове a2.do(), что при вызове a3.do(). С тем же успехом можно во всех случаях вызвать A.do(). Это и есть статический метод. Ты можешь пометить его как @staticmethod, а в коде метода A.do() self не передавать. Тогда при вызове a1.do() или a2.do() или a3.do() фактически будет выполняться A.do(). По сути это обычная функция, волею программиста оказавшаяся внутри класса. Можно представить, что эта функция находится за пределами определения класса, для простоты. Classmethod принимает не ссылку на экземпляр класса, а ссылку на подкласс. Это позволяет тебе дергать(вызывать) методы класса из подклассов, не создавая экземпляров класса. При этом подкласс использует метод класса как собственный, подставляя себя как это обычно делают экземпляры, когда указывают себя под именем self. Наверное ничего непонятно ![]()
2
|
2740 / 2343 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
|
|
09.06.2016, 21:34 | 10 |
Если хочешь узнать о паттернах и как их правильно использовать в Python почитай книгу Марк Саммерфилд Python на практике.
0
|
1 / 1 / 0
Регистрация: 25.03.2016
Сообщений: 13
|
|
09.06.2016, 21:38 [ТС] | 11 |
Я собираюсь прочесть Лучано Ромальо - К вершинам мастерства и тогда уже буду изучать паттерны. Python на практике - отличная книга.
0
|