摘要:一面向對象編程。是一門面向對象的編程語言,通過對象實現對方法的調用。面向過程的程序設計把計算機程序視為一系列的命令集合,即一組函數的順序執(zhí)行。對于面向對象語言,重要的概念是類和實例。
面向對象編程OOP:object oriented programming。
OOP把對象作為程序的基本單元,一個對象包含了數據和操作數據的函數。Python是一門面向對象的編程語言,通過對象實現對方法的調用。
面向過程的程序設計把計算機程序視為一系列的命令集合,即一組函數的順序執(zhí)行。為了簡化程序設計,面向過程把函數繼續(xù)切分為子函數,即把大塊函數通過切割成小塊函數來降低系統(tǒng)的復雜度。
而面向對象的程序設計把計算機程序視為一組對象的集合,而每個對象都可以接收其他對象發(fā)過來的消息,并處理這些消息,計算機程序的執(zhí)行就是一系列消息在各個對象之間傳遞。
對于面向對象語言,重要的概念是類和實例。類是一個抽象的模板,實例是根據類模板創(chuàng)建出的一個對象。
在python中,所有數據類型都可以視為對象,當然也可以自定義對象。自定義對象數據類型就是面向對象中類的概念,根據類來創(chuàng)建對象。
它的三大特點就是:封裝、繼承、多態(tài)。
類是一個抽象的模板,是一種數據結構。
語法:
class class_name: pass
class class_name(object): pass
說明:
class是關鍵字,類。類名class_name通常以大寫字母開頭。
object表示該類是從哪個類繼承而來。事實上object是所有類都會繼承的基類,一般不會顯示寫出。(我一般會習慣寫上)
比如學生,一個班級會有很多個學生,那對于學生這個集合,會有很多共同的地方,比如說學生的姓名、學號、年級、專業(yè)、成績等一系列共同的特性,那么我們就可以把這些都抽象成一個學生Student類。如下:
class Student(object): pass
上面例子,我們先用pass進行演示,表示什么都不操作。
三、實例instance通過類可以創(chuàng)建Student實例,方法如下:
>>> bart = Student() # 變量bart指向的是一個Student的實例 >>> bart <__main__.Student object at 0x0086F710> # 類object 實例的內存地址 >>> Student # 類# 返回的是Student 類的屬性 class
對類的實例,可以進行屬性的綁定。
屬性就是一個對象的數據或者函數元素。比如Student類中學生的姓名、學號等信息。
通過“據點屬性標識法”來訪問。
python是動態(tài)語言,根據類創(chuàng)建的實例可以任意綁定屬性。給實例綁定屬性的方法是通過實例變量,或者通過self變量。
>>> bart.name = "xlp" # 動態(tài)給變量綁定屬性 >>> bart.name "xlp"
那屬性是如何實現綁定的呢?__init__()實例方法。
當一個實例被創(chuàng)建后,Python會檢查是否實現了__init__()方法,如果沒有定義該方法,對實例不會施加任何特定的操作,任何需要特殊的操作,需要自己去自定義該方法。即__init()__會被自動調用,不管是默認的還是自定義的。
__init__(self)
1、 該方法的第一個參數永遠都是self,self指向創(chuàng)建的實例本身;
2、 通過該方法,把屬性綁定到self指向的實例上;
3、 __init__()方法返回None;
4、 該方法中,可以設置默認參數和位置參數。創(chuàng)建實例時,不能傳入空的參數,必須傳入與方法匹配的參數,但self不需要傳入,默認參數根據需要進行傳入與否。
針對第三點:因為實例對象是在自動化創(chuàng)建實例調用后返回的,如果定義了構造器__init__(),它不應該返回任何對象,否則就有可能發(fā)生沖突,只能返回實例。試圖返回任何非None的其他對象會報TypeError的錯誤:
查看實例屬性:dir()
通過內建函數dir(class_name)可以查看類的屬性,例如:dir(Student1)。也可以訪問實例的屬性。自己嘗試打印出來看看~
屬性這一塊還有點玄幻:類屬性和實例屬性。下一小節(jié)一起來看看吧~
然后面向過程其實也不太記得了,如果有懂的小伙伴可以留言哦~ ~ ~
如果覺得文章有丟丟用處,動動小指,點個贊吧!
如果哪里寫的有問題,或者有更好的方式,cue我一下
? thanks for watching, keep on updating...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/42519.html
摘要:以這種方式實現對象系統(tǒng)的目的是展示使用對象隱喻并不需要特殊的編程語言。我們的實現并不遵循類型系統(tǒng)的明確規(guī)定。反之,它為實現對象隱喻的核心功能而設計。是分發(fā)字典,它響應消息和。 2.6 實現類和對象 來源:2.6 Implementing Classes and Objects 譯者:飛龍 協議:CC BY-NC-SA 4.0 在使用面向對象編程范式時,我們使用對象隱喻來指導程序...
摘要:于發(fā)表了著名的有害論的論文引起了長達數年的論戰(zhàn)并由此產生了結構化程序設計方法。到現在為止面向對象已經成為了主流的開發(fā)思想。面向對象的程序設計優(yōu)點解決了程序的擴展性。 [Python3]Python面向對象的程序設計 一、面向對象的程序設計的由來 1.第一階段:面向機器,1940年以前 最早的程序設計都是采用機器語言來編寫的,直接使用二進制碼來表示機器能夠識別和執(zhí)行的指令和數據。 簡單來...
摘要:在設計模式中,抽象類不能夠被實例化初始化,但是可以依靠具體類的繼承來實現。對于大型項目來說,對象都是由基本的抽象類繼承實現,而這些類的方法通常都由接口來定義。 原文地址:PHP設計模式(二):抽象類和接口 Introduction 對于編程來說,對事物的抽象是一個老生常談的話題,抽象問題更利于面向對象編程以及程序設計模式。和C/C++,Java,Python等語言一樣,PHP也支持面向...
摘要:的名字并不是規(guī)定死的因為是形參,也可以使用,但是最好還是按照約定是用。類的私有方法兩個下劃線開頭,聲明該方法為私有方法,只能在類的內部調用,不能在類地外部調用。。 類 面向對象編程具有三大特性:多態(tài)、繼承、封裝定義:是一個抽象的模板對象:類實例化屬性:這個類實例化后的對象具有的特征方法:類對象可以執(zhí)行的函數 類的定義 class 類名 class People(object): ...
閱讀 1352·2021-10-08 10:04
閱讀 1983·2021-09-04 16:40
閱讀 2599·2019-08-30 13:21
閱讀 2351·2019-08-29 15:10
閱讀 2921·2019-08-29 12:35
閱讀 1253·2019-08-26 17:41
閱讀 3125·2019-08-26 17:03
閱讀 1237·2019-08-26 12:01