@cherish5

Обнулить значения всех инициализированных дескрипторов?

Добрый день. Необходимо создать два объекта и сохранить значения. Класс Price содержит метод класса null, который присваивает 0 во все поля-дескрипторы объектов-владельцев. И при удалении значения из объекта-владельца (с помощью оператора del) удаляется и ссылка из класса Price на этот объект. Возникла сложность с тем, как обнулить. Как это сделать?
class Price(object):

    def __init__(self):
        self.instances = []
        self.val = None

    def __get__(self, obj, obj_type):
        return self.val

    def __set__(self, obj, val):
        self.val = val
        self.instances.append(obj)   # можно ли так хранить ссылки на все объекты-владельцы?   и как к ним обратиться из null()

    def null(self):
        pass

    def __delete__(self, instance):
        self.value = 'erased'

class Customer:
    score = Price()


t1 = Customer()
t2 = Customer()
t1.score = 5          #5
t2.score = 10        #10
Price.null()
print(t1.score, t2.score)    #   0  0
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Ну вообще - зачем тебе такое? Но если очень хочется...

Ты хочешь обнулять только поля типа Price? Тогда не нужно хранить ссылки на владельцев, достаточно хранить ссылки на все экземпляры Price и присвоить им value = None или что ты там используешь как метку удалённого значения.

Но прямо скажу, это странное решение.
Ответ написан
Комментировать
@cherish5 Автор вопроса
Vindicar Это просто задача - числа внутри разных объектов обратить в 0 одной командой . Понять дескрипторы, решить, сдать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы