首頁 >後端開發 >Python教學 >講解Python核心基礎之面向對象

講解Python核心基礎之面向對象

coldplay.xixi
coldplay.xixi轉載
2020-12-14 17:40:463077瀏覽

python影片教學欄位介紹核心基礎的物件導向

講解Python核心基礎之面向對象

#相關免費學習推薦:

python影片教學



1、物件導向簡介
##Python從設計之初就已經是一門物件導向的語言,正因為如此,在Python中創建一個類別和物件是很容易的。如果你以前沒有接觸過物件導向的程式語言,那你可能需要先了解一些物件導向語言的一些基本特徵,在腦中頭形成一個基本的物件導向的概念,這有助於你更容易的學習Python的物件導向程式設計。



• Python是一門物件導向的程式語言
• 所謂物件導向的語言,簡單理解就是語言中的所有操作都是透過物件來進行的

面向過程

• 面向過程指將我們的程式分解為一個一個步驟,透過對每個步驟的抽象來完成程式
• 這種編寫方式往往只適用於一個功能,如果要實現別的功能,往往復用性比較低 • 這種編程方式符號人類的思維,編寫起來比較容易 • 1.媽媽穿衣服穿鞋出門
• 2.媽媽騎上電動車
• 3.媽媽到超市門口放好電動車
• 4.媽媽買西瓜

• 5.媽媽結帳
• 6.媽媽騎電動車回家
    •7.到家孩子吃西瓜
  • 物件導向的程式語言,關注的是對象,而不注重過程,對於物件導向一切皆對象
  • • 以上方式可以用孩子媽媽給孩子買瓜來解決
• 物件導向的程式設計思想,將所有功能統一保存到對應的物件中,要使用某個功能,直接找到對應的物件即可
• 這種編碼方式比較容易閱讀,且易於維護,容易重複使用。但是編寫的過程中較不符合常規的思維,編寫相對麻煩
  • 面向對象基本特徵




### ##類別(Class): 用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類別的實例。 ######類別變數:類別變數在整個實例化的物件中是公用的。類別變數定義在類別中且在函數體之外。類別變數通常不作為實例變數使用。 ######資料屬性:類別變數或實例變數, 用於處理類別及其實例物件的相關的資料。 ######方法重寫:如果從父類別繼承的方法不能滿足子類別的需求,可以對其進行改寫,這個過程叫方法的覆寫(override),也稱為方法的重寫。 ######局部變數:定義在方法中的變量,只作用於目前實例的類別。 ######實例變數:在類別的宣告中,屬性是用變數來表示的。這種變數就稱為實例變量,是在類別聲明的內部但是在類別的其他成員方法之外聲明的。 ######繼承:即一個衍生類別(derived class)繼承基底類別(base class)的欄位和方法。繼承也允許把一個衍生類別的物件當作一個基底類別物件。例如,有這樣一個設計:一個Dog類型的物件派生自Animal類,這是模擬"是一個(is-a)"關係(例圖,Dog是一個Animal)。 ######實例化:建立一個類別的實例,類別的具體物件。 ######物件:透過類別定義的資料結構實例。物件包括兩個資料成員(類別變數和實例變數)和方法。 ###############的物件導向(Object oriented Programming,OOP)程式設計 主要是針對大型軟體設計而來的。物件導向程式設計將資料和操作資料相關的方法封裝到物件中,組織程式碼和資料的方式更加接近人的思維,使程式的擴展性更強、可讀性更好,從而大大提高了程式設計的效率。 ###   ###   Python 完全採用了物件導向的思想,是真正物件導向的程式語言,完全支援物件導向的基本功能,例如:繼承、多型、封裝等。 ###   Python 中,一切皆物件。例如,資料型態、函數等,都是物件。 ###
  • Python 支援過程導向、物件導向、函數式程式設計等多種程式設計範式。物件導向、流程導向差異:

相同點: 都是解決問題的思考方式,都是程式碼組織的方式
#不同點:
面向過程(Procedure Oriented)思維: 面向過程程式設計更加關注的是“程式的邏輯流程”,是一種“執行者」思維,適合編寫小規模的程式。
物件導向(Object Oriented)思維: 物件導向更專注的是“軟體中物件之間的關係”,更契合人的思維模式,是一種“設計者」思維,適合編寫大規模的程式。物件導向可以幫助我們從宏觀上掌握、從整體分析整個系統。
但是,具體到實現部分的微觀操作(就是一個個方法),仍然需要面向過程的思路去處理。過程導向和物件導向是相輔相成的,物件導向離不開面向過程。
物件導向思考方式 遇到複雜問題,先從問題中找名詞(面向過程更多的是找動詞),然後確立這些名詞哪些可以作為類,再根據問題需求確定的類別的屬性和方法,確定類別之間的關係。

2. 類別(class)

  • #建立類別
  • 我們目前學習的都是Python的內建對象,但內建物件並不都能滿足我們的需求,所以我們在開發中常常要自訂一些對象
  • List item類別簡單理解它就是相當於一個圖紙,在程式匯總我們需要根據類別來建立物件。
    類別就是物件的圖紙
  • 我們也稱物件是類別的實例(instance)
  • 如果多個物件是透過一個類別建立的,我們稱這些物件是一類對象
  • 類別也是一個對象,類別就是用來建立物件的物件
  • 可以像物件中加入變量,物件中的變數稱之為屬性語法:物件.屬性名稱= 屬性值
class MyClass():
    pass

類別是抽象的,也稱之為「物件的模板」。我們需要透過類別這個模板,建立類別的實例對象,然後才能使用類別定義的功能。
而在Python中,Python物件包含幾個部分:

講解Python核心基礎之面向對象

  • #物件實例化
mc = MyClass()mc1 = MyClass()mc2 = MyClass()mc3 = MyClass()

所以,我們需要定義建構函式init() 方法,該方法會在我們所定義的物件中賦予物件的屬性。建構方法用於執行“實例物件的初始化工作”,即物件建立後,初始化當前物件的相關屬性,無回傳值。

init()的要點如下:

名稱固定,必須為:init()
第一個參數固定,必須為:self。 self 指的就是剛剛建立好的實例物件。
建構子通常用來初始化實例物件的實例屬性,例如,範例1中初始化實例屬性:name和sound
透過「類別名稱(參數清單)」來呼叫建構子。呼叫後,將創建好的物件傳回給對應的變數。例如: cat = Animal('小花','喵喵')
__init __()方法:初始化建立好的對象,初始化指的是:「給實例屬性賦值」
__new __()方法:用於建立對象,但我們一般無需重定義該方法。
如果我們不定義__init__方法,系統會提供一個預設的__init__方法。如果我們定義了帶參的__init__方法,系統不會建立預設的__init__方法。
註:
Python 中的 self 相當於 C 中的 self 指針,JAVA 和 C#中的 this 關鍵字。 Python 中,self 必須為建構子的第一個參數,名字可以任意修改。但一般遵守慣例,都叫做 self。
3. 類別的定義

• 類別和物件都是現實生活中事物的抽象
• 事物包含兩部分
• 1.資料(屬性)
• 2. 行為(方法)
• 呼叫方法物件.方法名稱()
• 方便呼叫和函數呼叫的差異:如果是函數調用,呼叫時有幾個形參,就會傳遞幾個實參。如果是方法調用,預設傳遞一個參數,所以方法中至少得有一個形參
• 在類別程式碼區塊中,我們可以定義變數和函數
• 變數會成為該類別實例的公共屬性,所有的該實例都可以透過物件.屬性名稱的形式存取
• 函數會成為該類別實例的公共方法,所有該類別實例都可以透過物件.方法名稱的形式存取

class Person():
    name = '奥特曼'
    def speak(w):
        print('我能说话')a = Person()b = Person()a.name = '葫芦娃'print(a.name)print(b.name)print(a.speak())print(b.speak())

4. 參數self

##
  • 属性和方法

• 类中定义的属性和方法都是公共的,任何该类实例都可以访问
• 属性和方法的查找流程
• 当我们调用一个对象的属性时,解析器会现在当前的对象中寻找是否还有该属性,如果有,则直接返回当前的对象的属性值。如果没有,则去当前对象的类对象中去寻找,如果有则返回类对象的属性值。如果没有就报错
• 类对象和实例对象中都可以保存属性(方法)
• 如果这个属性(方法)是所以的实例共享的,则应该将其保存到类对象中
• 如果这个属性(方法)是摸个实例独有的。则应该保存到实例对象中
• 一般情况下,属性保存到实例对象中 而方法需要保存到类对象中

  • self

方法是从属于实例对象的方法。实例方法的定义格式如下:
 
    def 方法名(self ,[形参列表]):
      函数体

方法的调用格式如下:
    对象.方法名([实参列表]) 要点:

定义实例方法时,第一个参数必须为 self。和前面一样,self 指当前的实例对象。 调用实例方法时,不需要也不能给 self
传参。self 由解释器自动传参 函数和方法的区别

都是用来完成一个功能的语句块,本质一样。 方法调用时,通过对象来调用。方法从属于特定实例对象,普通函数没有这个特点。
直观上看,方法定义时需要传递 self,函数不需要。 实例对象的方法调用本质: alt

类中其他操作:

dir(obj)可以获得对象的所有属性、方法 obj.dict 对象的属性字典 pass 空语句,相当于占位符。
isinstance(对象,类型) 判断“对象”是不是“指定类型”。

class Person():

    def speak(self):
        print('你好我是%s' % self.name)

    def read(self):
        passa = Person()b = Person()a.name = '葫芦娃'b.name = '奥特曼'a.speak()b.speak()结果:
C:\Users\giser\AppData\Local\Programs\Python\Python37\python.exe D:/pycharm/pythonbasic/day09.py
你好我是葫芦娃
你好我是奥特曼

Process finished with exit code 0

                 

以上是講解Python核心基礎之面向對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除