最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析Python面向?qū)ο缶幊?/h1>
 更新時間:2020年07月10日 11:52:45   作者:Alan.hsiang  
這篇文章主要介紹了Python面向?qū)ο缶幊痰南嚓P(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

概述

很多人接觸Python,都是從爬蟲開始,其實很多語言都可以做爬蟲,只是Python相對其他語言來說,更加簡單而已。但是Python并不止于爬蟲,在人工智能,科學(xué)計算等方面的應(yīng)用更加廣泛。古人云:萬丈高樓平地起,要想有長足的發(fā)展,打好基礎(chǔ)很重要,本文主要講解Python的面向?qū)ο笙嚓P(guān)知識,僅供學(xué)習(xí)分享使用,如有不足之處,還請指正。

面向?qū)ο蟮奶卣?/strong>

類:用來描述相同事物的特征的集合,如:Person 類,表示人,具有人的屬性和特征。
對象:通過類定義的具體的實例,如:zhangsan 表示一個具體的人。
繼承:是指派生類繼承基類的方法和屬性,并具有自己屬性和特征,如:Man是Person的子類。
封裝:隱藏數(shù)據(jù)和實現(xiàn)細(xì)節(jié),提供對外訪問方法。
多態(tài):一個基類,可以有多個派生類,可以有不同的形態(tài)。
抽象:拋開細(xì)節(jié),只關(guān)注本質(zhì)特征的過程。
以上是面向?qū)ο蟮幕咎卣?,那么Python在面向?qū)ο蠓矫媸侨绾巫龅哪兀?/p>

創(chuàng)建類

如下所示:

  • 使用 class 語句來創(chuàng)建一個新類,class 之后為類的名稱并以冒號結(jié)尾。
  • Python的類,沒有大括號表示類的內(nèi)容范圍,而是通過縮進(jìn)來實現(xiàn)。
  • 類的成員方法和普通方法的區(qū)別是,方法定義的第一個參數(shù)是self,表示類的實例,但在調(diào)用時不需要。
  • 其中__init__方法為類的初始化方法,當(dāng)聲明對象時,會調(diào)用對應(yīng)的方法。
  • 其中__del__方法為析構(gòu)函數(shù),當(dāng)類被釋放時調(diào)用。
class Employee:
  """員工類"""
  emp_count = 0 # 變量是一個類變量,它的值將在這個類的所有實例之間共享

  def __init__(self, name, salary):
    """初始化"""
    self.name = name
    self.salary = salary
    Employee.emp_count += 1

  def display_count(self):
    """顯示數(shù)量"""
    print('Total Employee =', Employee.emp_count)

  def display_employee(self):
    """顯示信息"""
    print('name =', self.name, ', salary = ', self.salary)

  def prt(self):
    """打印自己"""
    print(self)
    print(self.__class__)

  def __del__(self):
    """析構(gòu)函數(shù)"""
    print(self, '被釋放了')

創(chuàng)建對象

Python創(chuàng)建對象,不需要new關(guān)鍵字,類似于函數(shù)的調(diào)用,和Java及.Net不同。如下所示:

 '創(chuàng)建第一個對象'
 emp = Employee('Jack', 20)
 emp.display_count()
 emp.display_employee()
 emp.prt()

動態(tài)添加與刪除對象屬性

對象的屬性可以動態(tài)添加,這點與編譯型語言不同,如下所示:

 emp.age = 17 # 添加一個 'age' 屬性
 emp.age = 28 # 修改 'age' 屬性
 del emp.age # 刪除 'age' 屬性

也可以通過Python的內(nèi)置方法來添加和獲取屬性,如下所示:

print(getattr(emp, 'name')) # 獲取屬性
print(hasattr(emp, 'age')) # 是否包含屬性
setattr(emp, 'age', 18) # 設(shè)置屬性和值
print(hasattr(emp, 'age')) # 是否包含屬性
print(getattr(emp, 'age')) # 獲取屬性
delattr(emp, 'age') # 刪除屬性
print(hasattr(emp, 'age')) # 是否包含屬性

Python也有內(nèi)置類的一些屬性,如下所示:

 # 內(nèi)置對象
 print("Employee.__doc__:", Employee.__doc__)
 print("Employee.__name__:", Employee.__name__)
 print("Employee.__module__:", Employee.__module__)
 print("Employee.__bases__:", Employee.__bases__)
 print("Employee.__dict__:", Employee.__dict__)

類的屬性與方法

  • 類的私有屬性,以雙下劃線開頭,只可以在類內(nèi)部通過self進(jìn)行訪問。
  • 類的protected屬性,以下劃線開頭,只允許子類和自身調(diào)用。
  • 在類的內(nèi)部,使用 def 關(guān)鍵字可以為類定義一個方法,與一般函數(shù)定義不同,類方法必須包含參數(shù) self,且為第一個參數(shù)
  • 類的私有方法:以兩個下劃線開頭,聲明該方法為私有方法,不能在類的外部調(diào)用。在類的內(nèi)部調(diào)用 self.__private_methods

如下所示:

class JustCounter:
  """類描述"""
  __secretCount = 0 # 類的私有變量
  publicCount = 0 # 公開變量

  def count(self):
    self.__secretCount += 1
    self.publicCount += 1
    print('私有變量:', self.__secretCount)

Python不允許實例化的類訪問私有數(shù)據(jù),但你可以使用 object._className__attrName( 對象名._類名__私有屬性名 )訪問屬性,如下所示:

print(counter._JustCounter__secretCount) 

類的繼承

面向?qū)ο蟮木幊處淼闹饕锰幹皇谴a的重用,實現(xiàn)這種重用的方法之一是通過繼承機制。通過繼承創(chuàng)建的新類稱為子類或派生類,被繼承的類稱為基類、父類或超類。

  • Python中的繼承通過 class 子類名(父類名): 的格式實現(xiàn)。
  • 子類可以調(diào)用父類的方法和定義自己的方法。
  • 如果父類方法的功能不能滿足需求,子類可以重寫(overrides)父類的方法。

如下所示:Parent表示一個父類,擁有自己的屬性和方法。

class Parent:
  """定義父類"""
  parentAttr = 100

  def __init__(self):
    print('調(diào)用父類的構(gòu)造函數(shù)')

  def parentMethod(self):
    print('調(diào)用父類方法')

  def setAttr(self, attr):
    Parent.parentAttr = attr

  def getAttr(self):
    print('父類屬性:', Parent.parentAttr)

  def myMethod(self):
    print('我是父類的MyMethod')

Child表示一個子類,繼承自Parent,如下所示:

class Child(Parent):
  """定義子類"""

  def __init__(self):
    print('調(diào)用子類的構(gòu)造方法')

  def childMethod(self):
    print('調(diào)用子類方法')

  def myMethod(self):
    """重寫Overrides父類方法"""
    print('我是子類的MyMethod')

  def __str__(self):
    """重寫方法,適合人閱讀"""
    return 'str方法返回'

子類的實例化

如下所示:

 c = Child() # 實例化子類對象
 c.childMethod() # 調(diào)用子類方法
 c.parentMethod() # 調(diào)用父類方法
 c.setAttr(200) # 再次調(diào)用父類方法,設(shè)置屬性
 c.getAttr() # 再次調(diào)用父類方法 獲取屬性
 c.myMethod() # 調(diào)用的是子類的MyMethod
 

可以通過內(nèi)置函數(shù),判斷子類與類的關(guān)系,如下所示:

 print(issubclass(Child, Parent)) # 判斷是否是對應(yīng)的父子關(guān)系
 print(isinstance(c, Child)) # 判斷是否是實例對象
 print(isinstance(c, Parent)) # 判斷是否是實例對象

以上就是淺析Python面向?qū)ο缶幊痰脑敿?xì)內(nèi)容,更多關(guān)于Python面向?qū)ο缶幊痰馁Y料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python使用百度翻譯進(jìn)行中翻英示例

    python使用百度翻譯進(jìn)行中翻英示例

    這篇文章主要介紹了python使用百度翻譯進(jìn)行中翻英示例,需要的朋友可以參考下
    2014-04-04
  • Python腳本實現(xiàn)Mysql數(shù)據(jù)遷移

    Python腳本實現(xiàn)Mysql數(shù)據(jù)遷移

    MySQL數(shù)據(jù)庫遷移是指將MySQL數(shù)據(jù)庫中的數(shù)據(jù)和結(jié)構(gòu)遷移到另一個MySQL實例,下面小編就來為大家介紹一下如何通過Python腳本實現(xiàn)Mysql數(shù)據(jù)遷移吧
    2025-03-03
  • python 網(wǎng)絡(luò)編程詳解及簡單實例

    python 網(wǎng)絡(luò)編程詳解及簡單實例

    這篇文章主要介紹了python 網(wǎng)絡(luò)編程詳解及簡單實例的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • pyqt5、qtdesigner安裝和環(huán)境設(shè)置教程

    pyqt5、qtdesigner安裝和環(huán)境設(shè)置教程

    這篇文章主要介紹了pyqt5、qtdesigner安裝和環(huán)境設(shè)置方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • python-docx如何刪除所有bookmarks

    python-docx如何刪除所有bookmarks

    在Python-docx庫中,雖然沒有直接刪除書簽的功能,但可以通過操作XML元素,遍歷文檔結(jié)構(gòu)并刪除指定元素來實現(xiàn)刪除所有書簽的目的,首先要明白書簽在XML文件中的位置,然后利用Python-docx提供的element元素遍歷并刪除特定的書簽元素
    2024-09-09
  • 解決matplotlib.pyplot在Jupyter notebook中不顯示圖像問題

    解決matplotlib.pyplot在Jupyter notebook中不顯示圖像問題

    這篇文章主要介紹了解決matplotlib.pyplot在Jupyter notebook中不顯示圖像問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 對Python 數(shù)組的切片操作詳解

    對Python 數(shù)組的切片操作詳解

    今天小編就為大家分享一篇對Python 數(shù)組的切片操作詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python 添加文件注釋和函數(shù)注釋操作

    Python 添加文件注釋和函數(shù)注釋操作

    這篇文章主要介紹了Python 添加文件注釋和函數(shù)注釋操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • python操作redis方法總結(jié)

    python操作redis方法總結(jié)

    本篇文章給大家總結(jié)了python操作redis的實際方法和實例代碼,有興趣的朋友參考學(xué)習(xí)下。
    2018-06-06
  • Django Rest framework權(quán)限的詳細(xì)用法

    Django Rest framework權(quán)限的詳細(xì)用法

    這篇文章主要介紹了Django Rest framework權(quán)限的詳細(xì)用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07

最新評論

会泽县| 庐江县| 孝感市| 昂仁县| 安徽省| 婺源县| 大埔区| 甘肃省| 贡山| 临清市| 北票市| 凌海市| 古丈县| 南昌市| 金阳县| 阿拉善右旗| 龙口市| 穆棱市| 江津市| 浏阳市| 奈曼旗| 泗洪县| 石棉县| 玉溪市| 库车县| 铜川市| 方山县| 辽宁省| 铅山县| 隆回县| 淅川县| 江达县| 阜康市| 灵台县| 沙雅县| 灵山县| 琼结县| 青铜峡市| 湖口县| 漳浦县| 舒兰市|