我expet此代碼應輸出:引用在Python類自我
但事實並非如此。
class tree:
def __init__(self, size=2):
if size == 0:
return None
if size > 1:
half = size//2
self.left = tree(size-half)
self.right = tree(half)
else:
self.left = self.right = None
self.free = size
self.size = size
def resize(self,n):
while self.size < n:
t = tree(0)
t.left = self
t.right = tree(self.size)
t.free = t.left.size + t.right.size
t.size = self.size * 2
self = t
print("size in resize", self.size)
t = tree()
t.resize(5)
print("size of t", t.size)
輸出:
size in resize 8
size of t 2
我知道我可以在主做resize
return self
和t = tree.resize(5)
,但如果我想返回別的什麼?
請不要......修改'self'。請注意,這*只是*「命名」一個對象 - 「給一個名爲'self'的本地變量賦值」 - 它可以*永遠不會「改變」對象本身或引用該對象的外部變量。這個問題是遞歸和*返回新值的一個很好的選擇。 – 2011-10-03 22:41:11
代碼包含一個拼寫錯誤 - 'self-rigt'而不是'self.right'。 – phooji
但是對象是通過引用傳遞的,或者我如何通過引用傳遞對象的引用? –