param.Integer 赋值给 python class 转换为 int

param.Integer assignment to python class transformed to int

import param

class BaseClass(param.Parameterized):
    num_int = param.Integer(50000, bounds=(-200, 100000))

代码块returnsclassint

>>> type(BaseClass.num_int)

'<class 'int'>'

而不是

>>> num_int = param.Integer(50000, bounds=(-200, 100000))
>>> type(num_int)

'<class 'param.Integer'>'

这是有意为之的行为还是我遗漏了什么?

param.Integerparam.Number 继承了一个 __get__ 方法,这使它成为一个描述符。这意味着当一个实例作为 class 或实例属性访问时,您不会获得 Integer 实例本身;相反,您会得到其 __get__ 方法的结果。

也就是说,BaseClass.num_int 的计算结果为 BaseClass.__dict__['num_int'].__get__(None, BaseClass),其中 returns 一些 int 值(可能是默认值?)。