Python,将类变量设置为int值而不是int类型

时间:2017-03-24 10:07:06

标签: python class operator-overloading

如果我有这样的课程

class foo():
    def __init__(self, value = 0):
        self.__value = value
    def __set__(self, instance, value):
        self.__value = value
    def calc(self):
        return self.__value * 3
    def __repr__(self):
        return str(self.__value)

我现在可以创建类foo的变量并使用它的函数。

n = foo(3)
print(n.calc())

那里没有问题,但如果我继续这样的话。

n = 5
print(n.calc())

我会收到一个错误,因为我现在将n设置为值为5的int对象,因此没有calc()函数。

我通常使用C ++,所以我很困惑,因为我认为 __ set __ 函数应该覆盖=运算符,然后将 __ value 设置为值5就像我要使用

一样
operator=(int value)

在C ++中,我找了一个解释但没找到任何解释。

所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

如上所述here

  

以下方法仅适用于类的实例   包含该方法(所谓的描述符类)出现在   所有者类(描述符必须在所有者的类中   字典或其父母之一的班级字典。)