添加到Python中的自定义类

时间:2012-03-23 13:05:53

标签: python class

我希望能够以以下方式添加到自定义类:

x=myclass("Something", 7)
x + 3
当然,

7对应于我希望通过添加它来增加的内部属性。

该类包含一个引用列表中某个位置的数字。这似乎可以通过普通整数来完成,但我需要它作为一个单独的类型。这一切都是为了模仿旧的游戏语言。该类是其“变量”类,变量的值存储在上述列表中。显然,在较旧版本的游戏中,数组是通过对变量对象实例进行数学运算来伪造的,以获取不同的变量。所以我试图效仿。

2 个答案:

答案 0 :(得分:9)

如果您想支持类实例的添加,则需要在班级上定义__add__()方法:

class MyClass(object):
    def __init__(self, x):
        self.x = x
    def __add__(self, other):
        return self.x + other

示例:

>>> a = MyClass(7)
>>> a + 3
10

要同时支持3 + a,请定义__radd__()方法。

如果您希望能够使用

更新x个实例的MyClass属性
a += 3

您可以定义__iadd__()

如果您希望类实例的行为类似于带有一些其他方法和属性的整数,则只需从int派生。

答案 1 :(得分:0)

您要做的是运营商重载。您可以通过重载__add__方法在python新样式类中执行此操作,如下所示:

>>> class Test(object):
...     def __init__(self): self.prop = 3
...     def __add__(self, x): 
...         return self.prop + x
... 
>>> Test() + 4
7
>>>