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.