1. 程式人生 > >向類傳遞引數Python例項

向類傳遞引數Python例項

下面的程式碼嘗試了對一個類分別傳list、int、其他類三種引數,然後改變原始引數,觀察類引數的值是否一起發生變化。
  1. class A(object):  
  2.     def __init__(self, list):  
  3.         self.test = list  
  4. l = [123]  
  5. a = A(l)  
  6. print a.test  
  7. l.append(4)  
  8. print a.test  
  9. k = 5
  10. b = A(k)  
  11. print b.test  
  12. k = k + 1
  13. print b.test  
  14. class X(object):  
  15.     def __init__(self):  
  16.         self
    .a = 1
  17.         self.b = 2
  18.         self.c = 3
  19. x = X()  
  20. c = A(x)  
  21. print c.test.a  
  22. x.a = 4
  23. print c.test.a  

結論是list和其他類的改變會令類引數一起改變,而int不會。
Python中沒有指標,所以向類傳遞引數到底傳的是地址還是值應該和傳遞的型別有關,我認為應該是類似向函式傳遞引數時的可變引數和不可變引數。