小编Fre*_*ght的帖子

什么时候调用python描述符方法?

我使用python描述符模拟一些数据.

class Number:
    def __init__(self):
        self.num = 0 

    def __get__(self, instance, obj):
        print("is getting number")
        return self.number

    def __set__(self, instance, value):
        print("is setting number")
        self.number = value

    def __str__(self):
        return str(self.number)

num = Number()
num = 2 
print(num + 7)
Run Code Online (Sandbox Code Playgroud)

输出:

9
Run Code Online (Sandbox Code Playgroud)

它似乎成功地调用方法__get____set__,但我不知道为什么没有输出消息is getting numberis setting number.

我不确定python是否调用了描述符方法.

我的问题是什么时候会调用描述符方法?

我总结了我的起源猜测:

  1. 得到

    • 当用于obj.prop获取属性时,prop是另一个设置描述符的对象
    • 当计算某些表达式时应该得到诸如的值a + 5.如果a有描述符并将调用__get__
    • 如果一个对象模拟一个函数将首先调用__get__get函数体,然后调用__call__运行该函数.
    • 当对象出现在赋值语句的左侧时,如 obj = 5

但我一定是错的,我需要有人告诉我正确的概念.

python descriptor

2
推荐指数
1
解决办法
145
查看次数

标签 统计

descriptor ×1

python ×1