Кажется, что, в то время как класс создается, Python создает объекты регулярной функции. В них только превращаются несвязанные объекты метода впоследствии. Зная это, это - единственный способ, которым я мог найти, чтобы сделать то, что Вы хотите:
def logger(myFunc):
def new(*args, **keyargs):
print 'Entering %s.%s' % (myFunc.im_class.__name__, myFunc.__name__)
return myFunc(*args, **keyargs)
return new
class C(object):
def f(self):
pass
C.f = logger(C.f)
C().f()
Это производит желаемый результат.
, Если Вы хотите обернуть все методы в класс, тогда Вы, вероятно, хотите создать функцию wrapClass, которую Вы могли тогда использовать как это:
C = wrapClass(C)
Это одно из больших ограничений "многоразового приложения" Django. Неделю или две назад в подкасте «This Week in Django» они говорили об этой точной проблеме. Кажется, что консенсус, и я согласен, заключается в том, что на самом деле решения нет.
Если вы посмотрите на Pynax, который, вероятно, является крупнейшим распределенным проектом Django, вы увидите, что они объединяют приложения со всей системой .
Сам Python имеет несколько дистрибутивов пакетов. Я знаю, что ActiveState работает над запуском другого. Но даже тогда не все приложения django упакованы. Многие из них можно найти только в исходниках bitbucket, github или google. И даже тогда, чтобы получить копию всего этого, требуется, чтобы были установлены Mercurial, git и svn. (blah @ that)
В основном у вас есть 2 варианта:
Это печальный список, я знаю. На самом деле это отстой , особенно после использования системы рубиновых драгоценных камней, но на данный момент я не уверен, что лучше вы найдете.
Если это интересно, я написал небольшой блог сообщение о сохранении зависимостей в папке вашего проекта (или в SVN), а затем добавление этого пути в путь поиска Python в начале django. ( Управление зависимостями Django через SVN ) Это портит intellisense Komodo Edit, но в остальном все упрощает.
особенно после использования системы рубиновых драгоценных камней, но на данный момент я не уверен, что лучше вы найдете.Если это интересно, я написал короткое сообщение в блоге о сохранении зависимостей в папке вашего проекта (или в SVN), а затем добавив этот путь к пути поиска Python в начале django. ( Управление зависимостями Django через SVN ) Он портит intellisense Komodo Edit, но в остальном упрощает работу.
особенно после использования системы рубиновых драгоценных камней, но на данный момент я не уверен, что лучше вы найдете.Если это интересно, я написал короткое сообщение в блоге о сохранении зависимостей в папке вашего проекта (или в SVN), а затем добавив этот путь к пути поиска Python в начале django. ( Управление зависимостями Django через SVN ) Он портит intellisense Komodo Edit, но в остальном упрощает работу.
Лучше всего использовать пункт . pip - это утилита для установки пакетов Python. он позволяет вам создавать файлы требований, в которых перечислены зависимости для проекта. pip довольно распространен и широко используется сообществом Django, и я настоятельно рекомендую его использовать.
Как упомянул Т. Стоун Pinax , проект на основе Django имеет много зависимостей, и они используют pip файлы требований вполне успешно.