欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一篇文章徹底搞懂Python類屬性和方法的調用

 更新時間:2022年06月26日 09:42:12   作者:若年封塵  
對python?調用類屬性的方法詳解測試時候類的調用是經(jīng)常會用到的,下面這篇文章主要給大家介紹了關于Python類屬性和方法的調用的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

Python從設計之初就已經(jīng)是一門面向對象的語言,正因為如此,在Python中創(chuàng)建一個類和對象是很容易的。

一、類、對象概述

在面向對象程序設計中,把數(shù)據(jù)以及對數(shù)據(jù)的操作封裝在一起,組成一個整體(對象),不同對象之間通過消息機制來通信或者同步。對于相同類型的對象進行分類、抽象后,得出共同的特征而形成了類。

類的抽象具體包括兩個方面:

1.數(shù)據(jù)抽象:描述某類對象共有的屬性或狀態(tài)。

2.過程抽象:描述某類對象共有的行為或功能操作。

在python中,使用類來定義同一種類型的對象。類是廣義的數(shù)據(jù)類型,能夠定義復雜數(shù)據(jù)的特性,包括:

1.靜態(tài)特性(即數(shù)據(jù)抽象):創(chuàng)建類時用變量形式表示對象特征的成員稱為屬性(數(shù)據(jù)成員)。

2.動態(tài)特性(即行為抽象,也就是對數(shù)據(jù)的操作方法):用函數(shù)形式表示對象行為的成員稱為成員方法,數(shù)據(jù)成員和成員方法統(tǒng)稱為類的成員。

類是實現(xiàn)代碼復用和設計復用的一個重要方法,封裝、繼承、多態(tài)是面向對象程序設計的三個要素。

類是生成對象的抽象模板,對象是根據(jù)類創(chuàng)建出來的一個個具體的實例。

二、類的定義與使用

Python使用class關鍵字來定義類,class關鍵字之后是一個空格,接下來是類的名字,如果派生自其它基類的話則需要把所有父類放到一對圓括號中并使用逗號分隔,然后是一個冒號,最后換行并定義類的內部實現(xiàn)。

類名的首字母一般要大寫。

class Car(object):              #定義一個類,派生自object類(所有類的祖先,定義類時不存在其他父類就寫object)
	can_move=True               #定義類屬性
    def infor(self):            #定義成員方法
        print("This is a car")

類的方法與普通的函數(shù)只有一個特別的區(qū)別——它們必須有一個額外的第一個參數(shù)名稱, 按照慣例它的名稱是 self(self代表類的實例,而非類;self 不是 python 關鍵字,我們把他換成其他也是可以正常執(zhí)行的)。

三、類屬性和類方法的調用

定義了類之后,就可以用來實例化對象,并通過“對象名.成員”的方式來訪問其中的數(shù)據(jù)成員或成員方法。

>>>spring=Bird()                        #實例化對象
>>>print(Bird.have_feather)             #通過類名調用屬性
>>>print(Bird.have_head)                #通過對象名調用屬性
>>>spring.move()                        #通過對象名調用方法
>

類方法大體分為 3 類,分別是類方法、實例方法和靜態(tài)方法,其中實例方法用的是最多的。我們知道,實例方法的調用方式其實有 2種,既可以采用類對象調用,也可以直接通過類名調用。

通常情況下,我們習慣使用類對象調用類中的實例方法。但如果想用類調用實例方法,不能像如下這樣:

class Study:
    def info(self):
        print("學 Python")
#通過類名直接調用實例方法
Study.info()

運行上面代碼,程序會報出如下錯誤:

Traceback (most recent call last):
  File "D:\python3.6\demo.py", line 5, in <module>
    Study.info()
TypeError: info() missing 1 required positional argument: 'self'

其中,最后一行報錯信息提示我們,調用 info() 類方式時缺少給 self 參數(shù)傳參。這意味著,和使用類對象調用實例方法不同,通過類名直接調用實例方法時,Python 并不會自動給 self 參數(shù)傳值。

讀者想想也應該明白,self 參數(shù)需要的是方法的實際調用者(是類對象),而這里只提供了類名,當然無法自動傳值。

因此,如果想通過類名直接調用實例方法,就必須手動為 self 參數(shù)傳值。例如修改上面的代碼為:

class Study:
    def info(self):
        print("學 Python")
clang = Study()
#通過類名直接調用實例方法
Study.info(clang)

再次運行程序,結果為:

學 Python

可以看到,通過手動將 clang 這個類對象傳給了 self 參數(shù),使得程序得以正確執(zhí)行。實際上,這里調用實例方法的形式完全是等價于 clang.info()。

值得一提的是,上面的報錯信息只是讓我們手動為 self 參數(shù)傳值,但并沒有規(guī)定必須傳一個該類的對象,其實完全可以任意傳入一個參數(shù),例如:

class Study:
    def info(self):
        print(self,"學 Python")
#通過類名直接調用實例方法
Study.info("zhangsan")

運行結果為:

zhangsan 學 Python

可以看到,“zhangsan” 這個字符串傳給了 info() 方法的 self 參數(shù)。顯然,無論是 info() 方法中使用 self 參數(shù)調用其它類方法,還是使用 self 參數(shù)定義新的實例變量,胡亂的給 self 參數(shù)傳參都將會導致程序運行崩潰。

總的來說,Python 中允許使用類名直接調用實例方法,但必須手動為該方法的第一個 self 參數(shù)傳遞參數(shù),這種調用方法的方式被稱為“非綁定方法”。

用類的實例對象訪問類成員的方式稱為綁定方法,而用類名調用類成員的方式稱為非綁定方法。

四、私有成員與公有成員

  • 私有成員在類的外部不能直接訪問,一般是在類的內部進行訪問和操作,或者在類的外部通過調用對象的公有成員方法來訪問,而公有成員是可以公開使用的,既可以在類的內部進行訪問,也可以在外部程序中使用。
  • 從形式上看,在定義類的成員時,如果成員名以兩個下劃線開頭但是不以兩個下劃線結束則表示是私有成員,否則就不是私有成員。
  • Python并沒有對私有成員提供嚴格的訪問保護機制,通過一種特殊方式“對象名._類名__xxx”也可以在外部程序中訪問私有成員,但這會破壞類的封裝性,不建議這樣做。

在Python中,以下劃線開頭的變量名和方法名有特殊的含義,尤其是在類的定義中。

_xxx:受保護成員;
__xxx__:系統(tǒng)定義的特殊成員;
__xxx:私有成員,只有類對象自己能訪問,子類對象不能直接訪問到這個成員,但在對象外部可以通過“對象名._類名__xxx”這樣的特殊方式來訪問。

注意:Python中不存在嚴格意義上的私有成員。

總結

到此這篇關于Python類屬性和方法的調用的文章就介紹到這了,更多相關Python類屬性和方法調用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python實現(xiàn)TCP探測目標服務路由軌跡的原理與方法詳解

    Python實現(xiàn)TCP探測目標服務路由軌跡的原理與方法詳解

    這篇文章主要介紹了Python實現(xiàn)TCP探測目標服務路由軌跡的原理與方法,結合實例形式分析了Python TCP探測目標服務路由軌跡的原理、實現(xiàn)方法及相關操作注意事項,需要的朋友可以參考下
    2019-09-09
  • Python基于Socket實現(xiàn)簡單聊天室

    Python基于Socket實現(xiàn)簡單聊天室

    這篇文章主要為大家詳細介紹了Python基于Socket實現(xiàn)簡單聊天室,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 在jupyter notebook 添加 conda 環(huán)境的操作詳解

    在jupyter notebook 添加 conda 環(huán)境的操作詳解

    這篇文章主要介紹了在jupyter notebook 添加 conda 環(huán)境的操作詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python復制文件到指定目錄的實例

    python復制文件到指定目錄的實例

    下面小編就為大家分享一篇python復制文件到指定目錄的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python實現(xiàn)的列表排序、反轉操作示例

    Python實現(xiàn)的列表排序、反轉操作示例

    這篇文章主要介紹了Python實現(xiàn)的列表排序、反轉操作,結合實例形式分析了Python針對列表的sort排序、以及基于reverse、切片的反轉操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-03-03
  • opencv python 傅里葉變換的使用

    opencv python 傅里葉變換的使用

    這篇文章主要介紹了opencv python 傅里葉變換的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • python 獲取當天每個準點時間戳的實例

    python 獲取當天每個準點時間戳的實例

    今天小編就為大家分享一篇python 獲取當天每個準點時間戳的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python測試人員需要掌握的知識

    Python測試人員需要掌握的知識

    很多朋友都想做了個python的測試人員,那么python測試員需要知道的基本知識有哪些呢?跟著小編一起學習下。
    2018-02-02
  • 利用Python網(wǎng)絡爬蟲爬取各大音樂評論的代碼

    利用Python網(wǎng)絡爬蟲爬取各大音樂評論的代碼

    這篇文章主要介紹了如何用Python網(wǎng)絡爬蟲爬取網(wǎng)易云音樂評論,文章用代碼詳細的示范了如何爬取網(wǎng)易云音樂評論,對正在學習的小伙伴有參考價值,需要的朋友可以參考下
    2021-04-04
  • 一文詳解Python中itertools模塊的使用方法

    一文詳解Python中itertools模塊的使用方法

    itertools是python內置的模塊,使用簡單且功能強大。這篇文章主要為大家詳細介紹了itertools模塊的使用方法,感興趣的小伙伴可以了解一下
    2023-03-03

最新評論