詢問如何模擬指針在Python曾在解決一個不錯的建議,即做
class ref:
def __init__(self, obj): self.obj = obj
def get(self): return self.obj
def set(self, obj): self.obj = obj
然後可以用於做例如
a = ref(1.22)
b = ref(a)
print a # prints 1.22
print b.get() # prints 1.22
類可以修改通過添加
def __str__(self): return self.obj.__str__()
然後,
print b # prints out 1.22
現在我想能夠做算術,以避免使用get
的打印語句與b以相同的方式,我想這將等於說我想要a
和b
的行爲完全像obj
。無論如何要做到這一點?我嘗試添加方法,如
def __getattribute__(self, attribute): return self.obj.__getattribute__(attribute)
def __call__(self): return self.obj.__call__()
但不管這一點,
print a + b
輸出始終
Traceback (most recent call last):
File "test.py", line 13, in <module>
print a + b
TypeError: unsupported operand type(s) for +: 'instance' and 'instance'
有沒有人對如何修改ref
類的任何想法允許這個?
感謝您的任何建議!