我有这样一节课:
class NumberGenerator(object):
def __init__(self, seed=0):
random.seed(seed)
self.current = random.random()
def __next__(self):
self.next()
def next(self):
self.current = random.random()
return self.current
理想的情况下,我想通过一些魔术的方法,如果可用以下。你知道吗
>>> numGen = NumberGenerator(99)
>>> numGen.next()
0.15
>>> numGen + 2
2.15
我知道__str__
和__repr__
和__add__
等等,但是我想要的是一个神奇的方法,在引用对象时返回一些东西,而不是指向对象的指针。我保证,我不会给对象引用分配另一个变量。这在Python中可用吗?你知道吗
Python语言不包括指针。可以将Python中的变量看作对某个对象的引用。使用变量时,您访问的是变量所引用的对象。你知道吗
您希望
NumberGenerator
类具有的行为可以通过实现__add__
魔术方法来实现。这是当+
操作符与表达式左侧的类实例一起使用时Python调用的方法。换句话说:翻译为:
请注意,如果要使用
+
运算符,而不管类实例位于表达式的哪一侧,则还需要实现__radd__
魔术方法:下面是所使用的类的示例:
相关问题 更多 >
编程相关推荐