我希望能够以下列风格添加到自定义类:
x=myclass("Something", 7)
x + 3
Run Code Online (Sandbox Code Playgroud)
7,当然,对应于我想通过添加它来增加的内部属性.
该类包含一个引用列表中某个位置的数字.这似乎可以通过普通整数来完成,但我需要它作为一个单独的类型.这一切都是为了模仿旧的游戏语言.该类是其"变量"类,变量的值存储在上述列表中.显然,在较旧版本的游戏中,数组是通过对变量对象实例进行数学运算来伪造的,以获取不同的变量.所以我试图效仿.
如果要支持类实例的添加,则需要__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.
| 归档时间: |
|
| 查看次数: |
6206 次 |
| 最近记录: |