Python 中舊式類和新式類的區別是什麼?
在 Python 2.x 中,根據內建型別是否作為基類,存在兩種風格的類:
"classic" style or old style classes have no built-in type as a base class: >>> class OldSpam: # no base class ... pass >>> OldSpam.__bases__ ()
“新式”類:它們具有內建型別作為基類,這意味著它們直接或間接地以 object 作為基類。
>>> class NewSpam(object): # directly inherit from object ... pass >>> NewSpam.__bases__ (<type 'object'>,) >>> class IntSpam(int): # indirectly inherit from object... ... pass >>> IntSpam.__bases__ (<type 'int'>,) >>> IntSpam.__bases__[0].__bases__ # ... because int inherits from object (<type 'object'>,)
在編寫類時,始終希望使用新式類。這樣做的好處很多,列舉其中一些:
支援描述符。具體來說,描述符使得以下結構成為可能:
classmethod - 一種將類而不是例項作為隱式引數接收的方法。
staticmethod - 一種不將隱式引數 self 作為第一個引數接收的方法。
使用 property 的屬性:建立用於管理屬性獲取、設定和刪除的函式。
Python 3.x 隱式地僅支援新式類。在類宣告中無需在括號中提及 object 一詞。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP