Python3.Descriptor.Class

Python3.Descriptor.Class

你好,我有一个简单的任务,但我又卡住了:

如何将 class 中的变量用于描述符?

我有来自父 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)

正确代码如下:

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,我知道这是基本的但我真的是菜鸟面向对象。