1. gearheart

    27.01.2010

    0 ↑
    0 ↓
    Добрый день

    Есть вот такая задача:
    (Упростил как мог, чтобы не отвлекаться от сути)
        class A(object):
    FIELD = 10

    def count_fields(self):
    ....

    class B(A):
    FIELD = 100

    class C(B):
    FIELD = 1000

    class D(C):
    FIELD = 10000
    Нужно написать такой метод count_fields чтобы
        D().count_fields() == 11110
    Такое вообще возможно?

    Спасибо
  2. Что вас смущает в приведенном куске кода? На первый взгляд все будет работать.

  3. gearheart

    27.01.2010

    0 ↑
    0 ↓
    Ничего не смущает. Но работать не будет - метод count_fields не описан.
  4. Смешно. Что же в таком случае должно происходить внутри count_fields?

  5. anonymous

    27.01.2010

    0 ↑
    2 ↓
    А без "смешно" никак нельзя объяснить?
  6. alxrem

    27.01.2010

    2 ↑
    0 ↓
    Лучше озвучьте первоначальную задачу. Судя по тому, что у вас метод объекта хочет считать что-то, никак не зависящее от состояния объекта, где-то в решении архитектурная ошибка.
  7. gearheart

    27.01.2010

    0 ↑
    0 ↓
    Наверное, я не точно выразился.
    В приведенном примере необходимо посчитать сумму FIELD всех предков объекта и FIELD его самого.


    Хм.. пока я писал это, понял, что эта задача решается, если описывать сразу:
    class B(A):
    FIELD = A.FIELD + 100
    И этот подход хорошо подходит к моей первоначальной задаче - посчитать уровень заполненности профиля пользователя. (Да, необходима именно такая иерархия типов пользователей)
    Вместо FIELD у меня словарь весов для каждого поля, т.е. фотография - 50, описание - 10 и тд.

    В общем, всем спасибо )

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.