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

詳細(xì)介紹python類(lèi)及類(lèi)的用法

 更新時(shí)間:2021年05月31日 17:27:31   作者:穆瑾軒  
前面我們介紹了類(lèi)的創(chuàng)建及面向?qū)ο蟮娜筇匦?本篇將詳細(xì)介紹Python 類(lèi)的成員,成員修飾符,類(lèi)的特殊成員.需要的朋友可以參考下

一、類(lèi)的成員

類(lèi)的成員包括:屬性和方法。

屬性可以分為:靜態(tài)屬性和實(shí)例屬性

方法可以分為:普通方法、類(lèi)方法和靜態(tài)方法。

    

1.1 類(lèi)的屬性

屬性可以分為:靜態(tài)屬性和實(shí)例屬性。

實(shí)例屬性屬于對(duì)象,而靜態(tài)屬性屬于類(lèi)。

通過(guò)類(lèi)創(chuàng)建對(duì)象時(shí),如果每個(gè)對(duì)象都具有相同的屬性,那么就使用靜態(tài)屬性。

1.1.1 靜態(tài)屬性的創(chuàng)建方式

靜態(tài)屬性是屬于類(lèi)的,所以不用創(chuàng)建對(duì)象訪問(wèn)。

class Province:
 
    # 靜態(tài)字段
    country = '中國(guó)'
 
 
# 直接訪問(wèn)靜態(tài)字段
Province.country

例如:

1.1.2 實(shí)例屬性

lass Goods:
 
    def __init__(self):
        # 原價(jià)
        self.original_price = 100
        # 折扣
        self.discount = 0.8
 
    @property
    def price(self):
        # 實(shí)際價(jià)格 = 原價(jià) * 折扣
        new_price = self.original_price * self.discount
        return new_price
 
    @price.setter
    def price(self, value):
        self.original_price = value
 
    @price.deleter
    def price(self):
        del self.original_price

例如:

實(shí)例屬性可以在構(gòu)造方法中進(jìn)行初始化。@property裝飾器可以把一個(gè)實(shí)例方法變成其同名屬性,以支持.號(hào)訪問(wèn)。我們可以根據(jù)屬性的訪問(wèn)特點(diǎn),分別將三個(gè)方法定義為對(duì)同一個(gè)屬性:獲取、修改、刪除。

擴(kuò)展:

對(duì)于靜態(tài)屬性還可以使用property函數(shù)的形式定義一個(gè)屬性。與@property實(shí)現(xiàn)原理類(lèi)似。

property(fget=None, fset=None, fdel=None, doc=None)

class Foo:
 
    def get_bar(self):
        return 'get_bar'
 
    # *必須兩個(gè)參數(shù)
    def set_bar(self, value): 
        return 'set value' + value
 
    def del_bar(self):
        return 'del_bar'
 
    age = property(fget=get_bar,fset=set_bar,fdel=del_bar,doc='description...')

例如:

 

1.2 類(lèi)的方法

方法包括:普通方法、類(lèi)方法和靜態(tài)方法。

普通方法:由對(duì)象調(diào)用;至少一個(gè)self參數(shù);執(zhí)行普通方法時(shí),自動(dòng)將調(diào)用該方法的對(duì)象賦值給self;

類(lèi)方法:由類(lèi)調(diào)用; 至少一個(gè)cls參數(shù);執(zhí)行類(lèi)方法時(shí),自動(dòng)將調(diào)用該方法的類(lèi)復(fù)制給cls;

靜態(tài)方法:由類(lèi)調(diào)用;無(wú)默認(rèn)參數(shù);

class Foo:
 
    def __init__(self, name):
        self.name = name
 
    def ord_func(self):
        """ 定義普通方法,至少有一個(gè)self參數(shù) """
        # print self.name
        print('普通方法')
 
    @classmethod
    def class_func(cls):
        """ 定義類(lèi)方法,至少有一個(gè)cls參數(shù) """
        print('類(lèi)方法')
 
    @staticmethod
    def static_func():
        """ 定義靜態(tài)方法 ,無(wú)默認(rèn)參數(shù)"""
        print('靜態(tài)方法')

例如:

如果Python中沒(méi)有屬性,方法完全可以代替其功能。

二、類(lèi)成員的修飾符

對(duì)于每一個(gè)類(lèi)的成員而言都有兩種形式:

公有成員,在任何地方都能訪問(wèn)。

私有成員,只有在類(lèi)的內(nèi)部才能方法。

私有成員和公有成員的定義不同:私有成員命名時(shí),前兩個(gè)字符是下劃線。(特殊成員除外,例如:__init__、__call__、__dict__等)

ps:如果想要強(qiáng)制訪問(wèn)私有字段,可以通過(guò) 【對(duì)象._類(lèi)名__私有字段明 】訪問(wèn)(如:obj._C__foo),不建議強(qiáng)制訪問(wèn)私有成員。

class C:
	name = '公有靜態(tài)字段'
	__sname ='私有靜態(tài)字段'
 
	def pub_func(self):
		print(C.name)
 
	def pra_func(self):
		print(C._sname)
 
class D(C):
 
	def pub_show(self):
		print(C.name)
 
	def pra_show(self):
		print(C._sname)

例如:

注:不建議強(qiáng)制訪問(wèn)私有成員。

三、類(lèi)的特殊成員

3.1 __doc__

表示類(lèi)的描述信息。

>>> class Foo:
    """ 描述類(lèi)信息,這是用于看片的神奇 """
 
    def func(self):
        pass
 
>>> Foo.__doc__
' 描述類(lèi)信息,這是用于看片的神奇 

3.2  __module__ 和  __class__

__module__ 表示當(dāng)前操作的對(duì)象在哪個(gè)模塊

__class__     表示當(dāng)前操作的對(duì)象的類(lèi)是什么

>>> class Foo:
    """ 描述類(lèi)信息,這是用于看片的神奇 """
 
    def func(self):
        pass
>>> obj = Foo()
>>> obj.__module__
'__main__'
>>> obj.__class__
<class '__main__.Foo'>

3.3 __init__

構(gòu)造方法,通過(guò)類(lèi)創(chuàng)建對(duì)象時(shí),自動(dòng)觸發(fā)執(zhí)行。

>>> class Foo:
 
    def __init__(self, name):
        self.name = name
        self.age = 18
 
        
>>> obj = Foo('test')
>>> obj.name
'test'

3.4  __del__

當(dāng)對(duì)象在內(nèi)存中被釋放時(shí),自動(dòng)觸發(fā)執(zhí)行。

3.5 __call__

對(duì)象后面加括號(hào),觸發(fā)執(zhí)行。

>>> class Foo:
 
    def __init__(self):
        pass
    
    def __call__(self, *args, **kwargs):
 
        print('__call__')
 
        
>>> obj = Foo()
>>> obj()
__call__

3.6 __dict__

類(lèi)或?qū)ο笾械乃谐蓡T。

>>> class Province:
 
    country = 'China'
 
    def __init__(self, name, count):
        self.name = name
        self.count = count
 
    def func(self, *args, **kwargs):
        print('func')
>>> print(Province.__dict__) # 獲取類(lèi)的成員,即:靜態(tài)字段、方法
{'__module__': '__main__', 'country': 'China', '__init__': <function Province.__init__ at 0x0000000002F39820>, 'func': <function Province.func at 0x0000000002F398B0>, '__dict__': <attribute '__dict__' of 'Province' objects>, '__weakref__': <attribute '__weakref__' of 'Province' objects>, '__doc__': None}
>>> obj1 = Province('jiangxi',10000)
>>> print(obj1.__dict__) #獲取 對(duì)象obj1 的成員
{'name': 'jiangxi', 'count': 10000}

3.7  __str__

如果一個(gè)類(lèi)中定義了__str__方法,那么在打印 對(duì)象 時(shí),默認(rèn)輸出該方法的返回值。有點(diǎn)像java中的toString方法。

>>> class Foo:
 
    def __str__(self):
        return 'test'
 
>>> obj = Foo()
>>> print(obj)
test

3.8 __getitem__、__setitem__、__delitem__

用于索引操作,如字典。以上分別表示獲取、設(shè)置、刪除數(shù)據(jù)。

3.9 __getslice__、__setslice__、__delslice__

三個(gè)方法用于分片操作。

3.10 __iter__

用于迭代器,之所以列表、字典、元組可以進(jìn)行for循環(huán),是因?yàn)轭?lèi)型內(nèi)部定義了 __iter__。

>>> class Foo(object):
 
    def __init__(self, sq):
        self.sq = sq
 
    def __iter__(self):
        return iter(self.sq)
>>> for i in obj:
	print(i)
11
22
33
44
>>> 

到此這篇關(guān)于詳細(xì)介紹python類(lèi)的使用的文章就介紹到這了,更多相關(guān)python類(lèi)的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python切換pip源兩種方法(解決pip?install慢)

    Python切換pip源兩種方法(解決pip?install慢)

    這篇文章主要給大家介紹了關(guān)于Python切換pip源兩種方法(解決pip?install慢),我總結(jié)的這幾種更換pip源的常用方式,希望可以幫助您成功配置國(guó)內(nèi)源,解決安裝Python包速度慢的問(wèn)題,需要的朋友可以參考下
    2023-11-11
  • Python利用jmespath模塊進(jìn)行json數(shù)據(jù)處理

    Python利用jmespath模塊進(jìn)行json數(shù)據(jù)處理

    jmespath是python的第三方模塊,是需要額外安裝的。它在python原有的json數(shù)據(jù)處理上做出了很大的貢獻(xiàn)。本文將詳細(xì)介紹如何利用jmespath實(shí)現(xiàn)json數(shù)據(jù)處理,需要的可以參考一下
    2022-03-03
  • 在Python中使用Neo4j數(shù)據(jù)庫(kù)的教程

    在Python中使用Neo4j數(shù)據(jù)庫(kù)的教程

    這篇文章主要介紹了在Python中使用Neo4j數(shù)據(jù)庫(kù)的教程,Neo4j是一個(gè)具有一定人氣的非關(guān)系型的數(shù)據(jù)庫(kù),需要的朋友可以參考下
    2015-04-04
  • Python 結(jié)構(gòu)化字符串中提取數(shù)據(jù)詳情

    Python 結(jié)構(gòu)化字符串中提取數(shù)據(jù)詳情

    這篇文章主要介紹了Python 結(jié)構(gòu)化字符串中提取數(shù)據(jù)詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • python用faker庫(kù)批量生成假數(shù)據(jù)

    python用faker庫(kù)批量生成假數(shù)據(jù)

    這篇文章主要介紹了python用faker庫(kù)批量生成假數(shù)據(jù),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • python遍歷字符串中每一個(gè)字符的4種方式

    python遍歷字符串中每一個(gè)字符的4種方式

    很多計(jì)算過(guò)程都需要每次從一個(gè)字符串中取一個(gè)字符,下面這篇文章主要給大家介紹了關(guān)于python遍歷字符串中每一個(gè)字符的4種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • 利用 Python 實(shí)現(xiàn)隨機(jī)相對(duì)強(qiáng)弱指數(shù) StochRSI

    利用 Python 實(shí)現(xiàn)隨機(jī)相對(duì)強(qiáng)弱指數(shù) StochRSI

    隨機(jī)相對(duì)強(qiáng)弱指數(shù)簡(jiǎn)稱為StochRSI,是一種技術(shù)分析指標(biāo),用于確定資產(chǎn)是否處于超買(mǎi)或超賣(mài)狀態(tài),也用于確定當(dāng)前市場(chǎng)的態(tài)勢(shì)。本篇文章小編九來(lái)為大家介紹隨機(jī)相對(duì)強(qiáng)弱指數(shù)簡(jiǎn)稱為StochRSI,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • 遺傳算法python版

    遺傳算法python版

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)遺傳算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python hashlib模塊加密過(guò)程解析

    Python hashlib模塊加密過(guò)程解析

    這篇文章主要介紹了Python hashlib模塊加密過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • python網(wǎng)絡(luò)編程之五子棋游戲

    python網(wǎng)絡(luò)編程之五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了python網(wǎng)絡(luò)編程之五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05

最新評(píng)論

林西县| 泽普县| 武隆县| 娱乐| 靖安县| 巴楚县| 海口市| 芒康县| 英吉沙县| 荔波县| 浪卡子县| 吉林省| 洞头县| 多伦县| 毕节市| 株洲市| 邓州市| 互助| 巢湖市| 通渭县| 闽清县| 元朗区| 安乡县| 鹤山市| 景泰县| 横峰县| 灵宝市| 韶关市| 临沧市| 凤翔县| 巫山县| 新余市| 枞阳县| 哈密市| 吉木萨尔县| 台前县| 陆河县| 镇江市| 旅游| 崇信县| 灌南县|