添加到Python中的自定义类

Kel*_*tek 7 python class

我希望能够以下列风格添加到自定义类:

x=myclass("Something", 7)
x + 3
Run Code Online (Sandbox Code Playgroud)

7,当然,对应于我想通过添加它来增加的内部属性.

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

Sve*_*ach 9

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

class MyClass(object):
    def __init__(self, x):
        self.x = x
    def __add__(self, other):
        return self.x + other
Run Code Online (Sandbox Code Playgroud)

例:

>>> a = MyClass(7)
>>> a + 3
10
Run Code Online (Sandbox Code Playgroud)

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

如果您希望能够使用更新实例的x属性MyClass

a += 3
Run Code Online (Sandbox Code Playgroud)

你可以定义__iadd__().

如果您希望类实例的行为类似于带有一些其他方法和属性的整数,那么您应该简单地派生自int.

  • 我喜欢 Python 因为这些特性。你几乎可以用 Python 做任何事情。 (2认同)