Поиск по блогу

Loading...

Sunday, December 26, 2010

Python fixes. 'module' object is not callable

Если в вашем коде произошла такая фигня: 'module' object is not callable, значит вы неправильно определили import.

Пример:
Создаем класс MyObject и помещаем его в MyObject.py.
Создаем main.py.
Кладем оба файла в пакет my_pack

В main.py делаем импорт MyObject:

#-------------------Start of script---------------------
from my_pack import MyObject

def create_my_object():
    return MyObject()  #<-- здесь будет выброшен 'module' object is not callable

create_my_object()

#-------------------End of script---------------------


Почему мы получаем такую ошибку? Да потому что Python не Java и при импорте классов не достаточно определять только пакет.

Исправляем ошибку:

Заменяем 'from my_pack import MyObject' на 'from my_pack.MyObject import MyObject'

Теперь все ОК!

Tuesday, August 24, 2010

20000!

Именно таком числу равен факториал 20000...

Monday, August 23, 2010

Совместное использование Clojure и Java.

   В этом посте я на простом примере покажу как соединить в одном проекте Clojure и Java. Сразу к делу...

Tuesday, July 20, 2010

Концепция аспектно-ориентируемого программирования (AOP) "на пальцах".

  На сегодняшний момент существует несколько подходов программирования: процедурное, функциональное, объектно-ориентируемое (lat. OOP). Помимо этих трех существует так называемый аспектно-ориентированный подход (lat. AOP).
В этом Посте я сделаю тщетную попытку объяснить в чем заключается суть данного похода.

Monday, July 19, 2010

Spring hints #2. Используем Spring Context Events в задаче e-mail нотификации пользователей.

     В этом посте я расскажу о реализации собственного шаблона применительно к задаче отправки  пользовательских уведомлений. В примере я буду использовать следующие компоненты:
  • Объект, читающий данные из базы. Назовем его DataBaseReader. В упрощенной форме этот объект ничего из реальной базы читать не будет. Его задача имитировать выполнение какой-либо бизнес логики и генерировать ApplicationEvent.
  • Объект-событие NotificationEvent. Этот объект будет содержать в себе необходимую информацию для отправки сообщения.
  • Обработчик событий NotificationEventHandler. Обработчик получает все события, происходящие в Spring контексте, анализирует их и при необходимости обрабатывает.
Итак, приступим.

Sunday, July 18, 2010

Spring hints #1. Оверайдим проперти не абстрактных контекстных бинов.

   Недавно возникла задача переопределения значений полей не абстрактных бинов в Spring контексте. В Гугле готового решения быстро найти не удалось, поэтому пришлось реализовывать самому.
Для решения задачи сначала нужно реализовать специальный Proxy класс. Spring framework предоставляет пользователям богатый набор интерфейсов для расширения. В нашем случае мы реализуем интерфейс org.springframework.beans.factory.FactoryBean.