我希望能够添加到自定义类的风格:添加到自定义类在Python
x=myclass("Something", 7)
x + 3
7,当然,对应与我想增加一个内财产通过添加到它。
该类包含引用列表中某个位置的数字。这看起来像是可以用普通整数完成的事情,但我需要它作为一个单独的类型。这一切都是为了模仿旧的游戏语言。该类是它的'变量'类,变量的值存储在上述列表中。显然,在较旧版本的游戏中,通过对变量对象实例进行数学运算以获取不同的变量,数组被伪造。所以我试图效仿。
我希望能够添加到自定义类的风格:添加到自定义类在Python
x=myclass("Something", 7)
x + 3
7,当然,对应与我想增加一个内财产通过添加到它。
该类包含引用列表中某个位置的数字。这看起来像是可以用普通整数完成的事情,但我需要它作为一个单独的类型。这一切都是为了模仿旧的游戏语言。该类是它的'变量'类,变量的值存储在上述列表中。显然,在较旧版本的游戏中,通过对变量对象实例进行数学运算以获取不同的变量,数组被伪造。所以我试图效仿。
如果你想支持另外的类的实例,你需要在你的类中定义的__add__()
方法:
例子:
>>> a = MyClass(7)
>>> a + 3
10
也支持3 + a
,定义__radd__()
方法。
如果你希望能够使用
a += 3
可以定义__iadd__()
更新MyClass
实例x
属性。
如果您希望类实例的行为与具有其他方法和属性的整数类似,那么您应该简单地从int
派生。
你要做的是操作员重载。您可以通过重载__add__
方法,像这样在Python新式类做到这一点:
>>> class Test(object):
... def __init__(self): self.prop = 3
... def __add__(self, x):
... return self.prop + x
...
>>> Test() + 4
7
>>>
重读我写的内容,在添加时我可能不应该修改'prop'属性。哎呦。 – 2012-03-23 13:13:29
的类包含一个数字,指的是位置在列表中。这看起来像是可以用普通整数完成的事情,但我需要它作为一个单独的类型。这一切都是为了模仿旧的游戏语言。该类是它的'变量'类,变量的值存储在上述列表中。显然,在较旧版本的游戏中,通过对变量对象实例进行数学运算以获取不同的变量,数组被伪造。所以我试图效仿@。@ – Kelketek 2012-03-23 13:11:42
仍然不确定需求是什么,但是从这个评论看来,似乎来自'int'的dervie最简单。 – 2012-03-23 13:16:01
@凯尔克泰克:我已经将你的评论转移到了问题上,这就是它所属的问题。 – 2012-03-23 13:16:17