【发布时间】:2018-07-01 13:59:21
【问题描述】:
我有这样的课:
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没有指针。从根本上说,你不能这样做。
some_var始终是对对象的引用。 -
出于您的目的,您可能可以通过重载
+运算符来摆脱困境。您必须覆盖__add__。 -
@juanpa.arrivillaga 好的,如果这个引用不是指向对象的指针,那它是如何在 Python 中实现的?
-
@neo4k 实现细节无关紧要,Python 中没有指针。最好坚持语言的语义,除非您真的对特定实现的实现细节感兴趣。
-
@neo4k 注意短语“under the hood”。该声明只是说实现 Python 的 C 代码使用指针。这并不意味着 Python 语言本身有指针,只是 Python 实现的语言 - C - 有指针。
标签: python oop object reference