關於python中常用基本概念的總結
學習了一天的python,想對python中的類-class,物件,方法,屬性等概念做個簡單的總結。
What Is an Object?
Objects are key to understanding object-oriented technology. Look around right now and you'll find many examples of real-world objects: your dog, your desk, your television set, your bicycle.
物件的概念在面向物件程式設計的技術中非常關鍵。觀察周圍的環境,你會發現很多現實世界中的例子:你的狗,你的桌子,你的電視,你的自行車
引自:http://docs.oracle.com/javase/tutorial/java/concepts/object.html
現實世界中的物件共享2個特點:狀態和行為
比如狗的狀態(名字,顏色,品種,飢餓),行為(狗吠,搖尾巴)
自行車也有狀態(現在的傳動裝置,現在的腳踏板的節奏,現在的速度),行為(剎閘,改變腳踏板的行為)
去識別現實世界中的物件的狀態和行為能夠幫助我們非常好的理解面向物件程式設計的思想
現在花一點時間去觀察現實世界中的物件。對於你看到的每一個物件,都要問自己2個問題:“這個物件可能處在什麼樣的狀態”,他能執行什麼可能的行為。如果你這麼做了,你就會注意到現實世界中的物件可能會有所不同,你桌子上的檯燈可能只有2個可能的狀態(開和關),2個可能的行為(開啟和關閉)
但是你桌子上面的收音機可能會有額外的狀態和行為,狀態(開,關,現在的音量,現在的電臺),行為(開啟,關閉,調大音量,降低音量,搜尋,瀏覽,tune)
這些真實世界中的觀察結果都被傳送到面向物件程式設計的程式中。
軟體中的“object”和真實世界中的物件的概念非常相似:他們也是由state和related behavior組成。
一個物件在field(變數)中儲存他的state,之後通過他的方法methods(functions)來暴露出他的行為。方法操作內部的狀態,充當object-to-object 交流的首選機制
通過物件的方法,隱藏了內部的狀態和執行了相關的操作,這就是傳說中的資料封裝--------- 一個面向物件的基本原理
Consider a bike, 比如
A bicycle modeled as a software object.
通過歸因於state(現在的速度,現在的腳踏節奏)和提供改變狀態的方法,物件仍舊受控於外部世界怎樣使用它。
比如,如果這個自行車有6個齒輪,如果輸入的值小於1或者大於6,一個改變齒輪的方法可能被拒絕。
把程式碼打包到單個物件中,提供了很多好處,包括:
- 模組化:物件的source code可以單獨的寫和維護。一旦建立,一個物件可以輕易地傳送到系統內部
- 資訊隱蔽:只對一個物件互動的方法,其內部實現的細節仍然隱藏與外界的聯絡
- 程式碼重用:如果一個物件已經存在(或許是被另外一個developer寫的),你可以使用那個物件在你的程式中。這允許專家實現/測試/除錯複雜,特定於任務的物件,你可以相信在您自己的程式碼中執行。
- 可插入性和除錯方便:如果一個指定的物件被證明有問題,你可以很容易的從你的程式中移除他,並且plug一個不同的物件去替換他。這和現實世界中修理機制非常類似,如果一個部件壞了,你不需要去更換整部機器
所以什麼是物件呢,在python中一切都可以是物件,只要你指明他可能出現的狀態,和操控狀態的方法
Python 中的物件是 C 語言中結構體在堆上申請的一片記憶體區域。
What Is a Class?
In the real world, you'll often find many individual objects all of the same kind. There may be thousands of other bicycles in existence, all of the same make and model. Each bicycle was built from the same set of blueprints and therefore contains the same components. In object-oriented terms, we say that your bicycle is an instance of theclass of objects known as bicycles. A class is the blueprint from which individual objects are created.
The following
Bicycle
class is one possible implementation of a bicycle:
每一個自行車都是用同一個藍圖來製作的,因此都含有相同的屬性。在面向物件的terms中,we say that 你的自行車是一個物件的類的instance。
這個mode 簡化為 自行車(物件)---藍圖(類)---你的自行車。
下文參考此連結:http://blog.chinaunix.net/uid-15174104-id-3826306.html
言歸正傳,今天我們要了解的是Python的中物件(Objects)。Python的官方文件是這樣描述Python中的物件的。
Objects are Python’s abstraction for data. All data in a Python program is representedby
objects
or by relations between objects.
python中的物件是對資料的描述。python程式中的所有data都可以代表物件(所以我覺得是不是此時
Python把所有的一切都認為是物件(Objects), 這就是那句著名的話 "Everything is an object in Python"。實際上,
物件(Objects)是Python對於資料的一種抽象。在Python程式中,所有的資料都是通過物件或者物件之間的關係
來表示的。 Python中的物件有由三個部分組成: 標示(identity),型別(type)和值(value)。
標示(identity)
每一個物件都是唯一的。我們可以用物件的標示(identity)來比較兩個物件,即使用 is語句。我們可以把物件的標
示(identity)看做是物件在記憶體中的地址。當一個物件一旦被建立,它的標示(identity)將不再改變直到這個物件
消失。當物件消失後,它的標示(identity)將會被釋放,並可能被未來的一個物件來使用。所以,物件的標示是唯一
的,不變的,並存在於物件的整個生命週期。為了更形象的說明什麼是物件的標示(identity),我們可以用Python中
內建函式id()來返回一個物件的標示(identity)。
說的直白些,物件的標示(identity)其實就是一個整數,它是物件在記憶體中的地址。
- 型別(type)
物件的型別(type)則決定了物件支援什麼樣的操作和運算,可以被賦予什麼樣的值。 內建函式type()返回的
是當前所給物件的型別。同對象的標示(identity)一樣,型別(type)也是不可變的【1】 。
物件的是值本身也是一個物件,且它和物件有同樣的的型別(type)。有些物件的值是可變的,有些物件的值
- 值(value)
是不可變的。我們把那些值可以變化的物件叫做可變物件(mutable objects),把那些值不可變的物件叫做不
變物件(immutable objects)。一個物件的易變性(mutability)是由這個物件的型別(type)來決定的。
比如,數字(numbers),字串(strings),元組(tuples)是不可變的,而字典(dictionaries),列表(lists )
是可變的。
物件從來不會顯示地消失,如果某個物件不再被使用後,它們會在垃圾回收後變的不可以用。
至此,我們已經對Python物件有了基本的瞭解。下次,我們將深入講解Python物件的一些特性。敬請期待!
相關推薦
關於python中常用基本概念的總結
學習了一天的python,想對python中的類-class,物件,方法,屬性等概念做個簡單的總結。 What Is an Object? Objects are key to understanding object-oriented technology. Look
3.python中的基本概念
註釋: 單行註釋 # 多行註釋 """ ''' 變數: 把程式執行中產生的值,暫時儲存在記憶體,方便後面的程式呼叫。 變數命名的規則: 1、用數字、字母、下劃線組成。 2、不能用數字開頭,更不能是純數字。 3、不能使用python的關鍵字。 4、不要用中文寫程式碼。 5、不
簡答題』 Python中的基本概念
Python和Java、PHP、C、C#、C++等其他語言的對比? 簡述解釋型和編譯型程式語言? 程式碼中要修改不可變資料會出現什麼問題? 丟擲什麼異 print 呼叫 Python 中底層的什麼方法? 簡述你對 input()函式的理解? Python直譯器種類以及特點? Python2 中 range
Python中的面向物件程式設計的一些基本概念總結
一、一些專有詞彙的定義 面對物件程式設計(OOP:object oriented programming): 是一種程式設計範型,同時也是一種程式開發的方法,實現OOP的程式希望能夠在程式中包含各種獨立而又相互呼叫的物件,沒一個物件又都應該能夠接受資料、資料處理並將
Python中常用操作字串的函式與方法總結
本文轉載自:https://www.jb51.net/article/79196.htm Python中常用操作字串的函式與方法總結 這篇文章主要介紹了Python中常用操作字串的函式與方法總結,包括字串的格式化輸出與拼接等基礎知識,需要的朋友可以參考下 例如這樣一個字串 Python,
Python網路爬蟲中常用第三方庫總結
#options br.set_handle_equiv(True) #br.set_handle_gzip(True) br.set_handle_redirect(True) br.set_handle_referer(True) br.set_handle_robots(False) #Follows
13.python中web框架概念的引入。
web框架 python 一、什麽是web框架?框架,就是一個為解決一個開放性問題而設計的具有一定約束性的支撐結構,使用框架可以幫你快速開發特定的系統,簡單地說,就是你用別人搭建好的舞臺來做表演。對於所有的Web應用,本質上其實就是一個socket服務端,用戶的瀏覽器其實就是一個socket客戶端。
兔子--ps中的基本工具總結(ps cs5)
計數 手工 背景 滾動 高速 pop 基本 工具 史記 矩形選框工具 橢圓選框工具 單行選框工具 單列選框工具 移動工具 套索工具櫃 多邊形套索工具 磁性套索工具 魔棒工具 高速選擇工具 裁剪工具 切片工
機器學習基本概念總結(轉載)
9.png png log images es2017 enter 08-18 機器學習 style 機器學習基本概念總結(轉載)
Python中的基本類型簡介
rip 作用 集合 成了 叠代 如果 增加 下劃線 等號 1、變量 變量不僅可以是數字,還可以是任意數據類型 命名規範:變量是用一個變量名表示,變量名必須是大小寫英文、數字和下劃線_的組合,且不能用數字開頭 python中等號“=”是賦值語句,可以把任意數據類型賦值給變量
ROS中的基本概念釋義
基本概念 概念 放音 可執行文件 主程序 之間 節點 實現 publisher 1.節點(node) 一個節點是一個可執行文件.可以理解為一個main主程序,用來實現一個功能,比如播放MP3. 2.發布者(Publisher)和訂閱者(Subscriber) 發布者和
Python中常用的模塊(OS模塊)
幫助文檔 .get pytho python代碼 dir() port OS .html 技術分享 一、Python OS模塊介紹 OS模塊簡單的來說它是一個Python的系統編程的操作模塊,可以處理文件和目錄這些我們日常手動需要做的操作。 可以查看OS模塊的幫助文檔: &
Python中常用的模塊(random模塊)
ndb targe href 函數 設定 shuf 浮點 lis mod 一、random模塊簡介 Python標準庫中的random函數,可以生成隨機浮點數、整數、字符串,甚至幫助你隨機選擇列表序列中的一個元素,打亂一組數據等。 二、random模塊重要函數 1 )、r
Python中常用的模塊(sys模塊)
技術分享 案例演示 解釋 事先 目錄名 程序 jpg 分享圖片 int 一、導入sys模塊操作 首先,打開終端模擬器進入Python解釋器或者打開IDE編輯器創建一個新的.py後綴名的Python程序文件。 下面,以解釋器中的操作舉例: >>> impor
python中常用的處理字符串的方法
sum cbac post OS 如果 ror 返回 cdb IT 1. find() 查看子序列的首個索引,沒有則返回-1 name = ‘aabcdbefg‘ c = name.find(‘b‘) print(c) 2 2.join()
python中常用模塊詳解二
digest cal alt a* bytes byte code 十六 負責 log模塊的講解 1 Python 使用logging模塊記錄日誌涉及四個主要類,使用官方文檔中的概括最為合適: 2 3 logger提供了應用程序可以直接使用的接口API;
WebLogic 中的基本概念
gic 應用 國家 nag 計算機 監控 service scrip 線程 WebLogic 中的基本概念 上周參加了單位組織的WebLogic培訓,為了便於自己記憶,培訓後,整理梳理了一些WebLogic的資料,會陸續的發出來,下面是一些基本概念。 Domain : 域
python中常用的文件和目錄操作(二)
工作目錄 environ win works ID ksh sys remove -s OS模塊 一. 概述 python os模塊提供了非常豐富的方法用來處理文件和目錄 二. 導入:import os 三. 常用方法 1. os.name 輸出字符串表示正在使用的平臺,如
Python 中的那些坑總結——持續更新
多說 分享 earlier als lse image code while HA 1.三元表達式之坑 很顯然,Python把第一行的(10 + 4)看成了三元表達式的前部分,這個坑是看了《Python cookbook》(P5)中學到的,書中的代碼: 2.Py
python中初級裝飾器總結
http 目前 pri span 做的 輸出 rgs bsp col 打印 args 與 *args 的區別 1 #打印時區別 2 def outer(*args, **kwargs): 3 print(args) #輸出結果:(1, 2, 3,