Python3.Descriptor.Class

Здравствуйте, у меня просто задача, но я снова застрял:

Как я могу использовать переменную из класса в дескриптор?

я имею commission переменная из родительского класса, и мне нужно использовать его в дескриптор при вызове set: self.amount = int(amount) * int(commission)

Как я могу это сделать?

Спасибо!

Полный код ниже:

class Value():
    def __init__(self):

        return

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

    def __set__(self, obj, amount, commission):
        self.amount = int(amount) * int(commission)


class Account:

    def __init__(self, commission):
        self.commission = commission

    amount = Value(self.commission)

new_account = Account(0.1)
new_account.amount = 100

print(new_account.amount)

1 ответ

Решение

Правильный код ниже:

class Value():
    def __init__(self):
        return

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

    def __set__(self, obj, value):
        self.value = value * (1 - obj.commission)


class Account:
    amount = Value()

    def __init__(self, commission):
        self.commission = commission


new_account = Account(0.1)
new_account.amount = 100

print(new_account.amount)

Хитрость в том, что когда ты звонишь __set__ в дескрипторе вы передаете obj внутрь, и вы можете вызывать любую переменную или метод, как обычно, obj.xxx, это базовый, я знаю, но я действительно нуб с OOP.

Другие вопросы по тегам