教為學:Python學習之路(六):類

來源:互聯網
上載者:User
教為學:Python學習之路(六):類類與對象

通俗點說類是定義,對象是實體。

簡單點說人是類,高鵬我是對象。

屬性

屬性有執行個體屬性和類屬性之分。

先上一段代碼看看:

  1. class Fruit:
  2.     price = 0
  3.  
  4.     def __init__(self):
  5.         self.color='red'
  6.         zone="china"
  7.  
  8. if __name__=="__main__":
  9.      print "Fruit price:%d"%Fruit.price
  10.      apple = Fruit()
  11.      print "apple color:%s"%apple.color
  12.      print "apple price:%d"%apple.price
  13.      banane = Fruit()
  14.      print "banane color:%s"%banane.color
  15.      print "banane price:%d"%banane.price
  16.  
  17.      Fruit.color="yellow"
  18.      Fruit.price=50
  19.  
  20.      print "apple color:%s"%apple.color
  21.      print "apple price:%d"%apple.price
  22.      print "banane color:%s"%banane.color
  23.      print "banane price:%d"%banane.price
  24. #結果
  25. Fruit price:0
  26. apple color:red
  27. apple price:0
  28. banane color:red
  29. banane price:0
  30. apple color:red
  31. apple price:50
  32. banane color:red
  33. banane price:50

通過類可以直接修改所有類的類屬性,卻不可以修改執行個體屬性。

修改17、18行上。

  1. class Fruit:
  2.     price = 0
  3.  
  4.     def __init__(self):
  5.         self.color='red'
  6.         zone="china"
  7.  
  8. if __name__=="__main__":
  9.      print "Fruit price:%d"%Fruit.price
  10.      apple = Fruit()
  11.      print "apple color:%s"%apple.color
  12.      print "apple price:%d"%apple.price
  13.      banane = Fruit()
  14.      print "banane color:%s"%banane.color
  15.      print "banane price:%d"%banane.price
  16.  
  17.      apple.color="yellow"
  18.      apple.price=50
  19.  
  20.      print "apple color:%s"%apple.color
  21.      print "apple price:%d"%apple.price
  22.      print "banane color:%s"%banane.color
  23.      print "banane price:%d"%banane.price
  24. #結果
  25. Fruit price:0
  26. apple color:red
  27. apple price:0
  28. banane color:red
  29. banane price:0
  30. apple color:yellow
  31. apple price:50
  32. banane color:red
  33. banane price:0

對執行個體變數修改隻影響本身執行個體變數和本執行個體的類屬性。

再談一句很搞笑的。

  1. class Fruit:
  2.     price = 0
  3.  
  4.     def __init__(self):
  5.         self.color='red'
  6.         zone="china"
  7.  
  8. if __name__=="__main__":
  9.      print "Fruit price:%d"%Fruit.price
  10.      apple = Fruit()
  11.      print "apple price:%d"%apple.price
  12.      banane = Fruit()
  13.      print "banane price:%d"%banane.price
  14.  
  15.      apple.price=30
  16.      Fruit.price=50
  17.  
  18.      print "apple price:%d"%apple.price
  19.      print "banane price:%d"%banane.price
  20. #結果
  21. Fruit price:0
  22. apple price:0
  23. banane price:0
  24. apple price:30
  25. banane price:50

如果執行個體修改了類屬性就會脫離類屬性。

類的方法
  1. class Fruit:
  2.     price = 0
  3.  
  4.     def __init__(self):
  5.         self.color='red'
  6.         zone="china"
  7.     def printColor(self):
  8.         print "color:"+self.color
  9.     def printPrice(self):
  10.         print "price:%d"%self.price
  11.     @staticmethod
  12.     def printStatic():
  13.         print "static"
  14.  
  15.  
  16.  
  17. if __name__=="__main__":
  18.     Fruit.printStatic()
  19.     apple = Fruit()
  20.     apple.printStatic()
  21.     apple.printPrice()
  22.     apple.printColor()

普通方法內建self參數,可以通過self訪問執行個體屬性和類屬性。而靜態方法不內建self參數,也不能通過self訪問執行個體參數和類參數。

  1. class Fruit:
  2.     price = 0
  3.     @staticmethod
  4.     def printStatic():
  5.         print Fruit.price
  6.  
  7. if __name__=="__main__":
  8.     Fruit.printStatic()

它只能通過類直接存取。

建構函式和解構函式
  1. class Fruit:
  2.     count=0
  3.     def __init__(self):
  4.         print "我被調用了"
  5.  
  6.     def __del__(self):
  7.         print "我也不幸被調用了"
  8.  
  9. if __name__=="__main__":
  10.     apple = Fruit()
  11. #結果
  12. 我被調用了
  13. 我也不幸被調用了
  14.  
  15.  
  16. class Fruit:
  17.     count=0
  18.     def __init__(self):
  19.         print "我被調用了"
  20.  
  21.     def __del__(self):
  22.         print "我也不幸被調用了"
  23.  
  24. if __name__=="__main__":
  25.     apple = Fruit()
  26.     Fruit.count
  27. #結果
  28. 我被調用了
  29. 我也不幸被調用了

還類初始化和銷毀的時候被調用。

而類被調用的時候不會被自動調用。

總結

這次對類做了一些基本的介紹。下一次我們談談繼承、多態。

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.