Форум сайта python.su
Всем спасибо за объяснения :)
Андрей Светлов, отдельное спасибо.
Вопрос был для меня закономерен, просто я первый раз такое встречаю.
До этого в образце ООП для меня С++ такого я не встречал. Спасибо за понимание.
Отредактировано (Июнь 7, 2007 18:54:58)
Офлайн
>>> class A(object): pass >>> a = A(); a.p() Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> a = A(); a.p() AttributeError: 'A' object has no attribute 'p' >>> def p(self): print self.d >>> A.p = p; a.d = 'Hello world' >>> a.p() Hello world >>> A.p(a) Hello world >>>
Офлайн
Когда я писал свою простыню, она мне показалась и так достаточно длинной, чтобы приводить подобный пример. Поэтому я только упомянул о возможности динамического создания/изменения класса.
По поводу встроенных классов: я не вижу необходимости дополнять str, а тем более object. Более того, считаю, что это очень опасно.
А вот унаследоваться от str и начать наследуемый класс модифицировать “на лету” - очень полезно и всегда можно. Только не забывайте, что при работе с базовыми классам лучше использовать __new__ (от __init__ толку почти никакого). И унаследованный класс можно использовать везде, где требуется семантика str.
Офлайн
Андрей СветловКогда заходит речь на эту тему, я тоже иногда говорю подобные слова :), но, черт возьми, как иногда не хватает гибкости руби, смоллтолка, или хотя бы того же javascript'а.
Когда я писал свою простыню, она мне показалась и так достаточно длинной, чтобы приводить подобный пример. Поэтому я только упомянул о возможности динамического создания/изменения класса.
По поводу встроенных классов: я не вижу необходимости дополнять str, а тем более object. Более того, считаю, что это очень опасно.
Офлайн
та же проблема была, спасибо!
Офлайн