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

Python中方法鏈的使用方法

 更新時(shí)間:2016年02月23日 09:17:01   投稿:lijiao  
這篇文章主要為大家詳細(xì)介紹了Python中方法鏈的使用方法,方法鏈(method chaining)是面向?qū)ο蟮木幊陶Z言中的一種常見語法,對(duì)方法鏈感興趣的小伙伴們可以參考一下

方法鏈(method chaining)是面向?qū)ο蟮木幊陶Z言中的一種常見語法,可以讓開發(fā)者在只引用對(duì)象一次的情況下,對(duì)同一個(gè)對(duì)象進(jìn)行多次方法調(diào)用。舉個(gè)例子:

假設(shè)我們有一個(gè)Foo類,其中包含有兩個(gè)方法——bar和baz。

我們創(chuàng)建一個(gè)Foo類的實(shí)例:

foo = Foo()

如果不使用方法鏈,要想連續(xù)調(diào)用對(duì)象foo的bar和baz方法的話,我們得這樣做:

foo.bar() # Call method bar() on object foo.
foo.baz() # Call method baz() on object foo.

如果使用方法鏈的話,我們就能這樣實(shí)現(xiàn): foo.bar().baz()

方法鏈的一個(gè)好處,是可以減少你使用對(duì)象名的次數(shù)。調(diào)用的方法越多,能夠減少的次數(shù)就越多。因此,這個(gè)方法也能一定程度上減少需要閱讀、測(cè)試、調(diào)試、維護(hù)的代碼數(shù)量。這個(gè)好處不大,但也是有用的。

請(qǐng)注意,方法鏈的一個(gè)限制是,只能用在不需要返回其他值的方法上,因?yàn)槟阈枰祷豷elf對(duì)象。即使Python支持用一個(gè)return語句返回多個(gè)值,也可能無法解決這個(gè)問題。

下面是在Python中實(shí)現(xiàn)方法鏈的一個(gè)示例:

class Person:
  def name(self, value):
    self.name = value
    return self

  def age(self, value):
    self.age = value
    return self

  def introduce(self):
    print "Hello, my name is", self.name, "and I am", self.age, "years old."

person = Person()
person.name("EarlGrey").age(21).introduce()
# => Hello, my name is EarlGrey and I am 21 years old.

上面那種實(shí)現(xiàn)可能太簡(jiǎn)單了。下面我們來看一種更加現(xiàn)實(shí)的方法鏈?zhǔn)褂梅椒ǎ壕帉懸粋€(gè)字符串處理程序string_processor.py,支持方法鏈。

import copy

class StringProcessor(object):
  '''
  A class to process strings in various ways.
  '''
  def __init__(self, st):
    '''Pass a string for st'''
    self._st = st

  def lowercase(self):
    '''Make lowercase'''
    self._st = self._st.lower()
    return self

  def uppercase(self):
    '''Make uppercase'''
    self._st = self._st.upper()
    return self

  def capitalize(self):
    '''Make first char capital (if letter); make other letters lower'''
    self._st = self._st.capitalize()
    return self

  def delspace(self):
    '''Delete spaces'''
    self._st = self._st.replace(' ', '')
    return self

  def rep(self):
    '''Like Python's repr'''
    return self._st

  def dup(self):
    '''Duplicate the object'''
    return copy.deepcopy(self)

def process_string(s):
  print
  sp = StringProcessor(s)
  print 'Original:', sp.rep()
  print 'After uppercase:', sp.dup().uppercase().rep()
  print 'After lowercase:', sp.dup().lowercase().rep()
  print 'After uppercase then capitalize:', sp.dup().uppercase().\
  capitalize().rep()
  print 'After delspace:', sp.dup().delspace().rep()

def main():
  print "Demo of method chaining in Python:"
  # Use extra spaces between words to show effect of delspace.
  process_string('hOWz It   GoInG?')
  process_string('The   QUIck  brOWn     fOx')

main()

下面是這個(gè)程序的運(yùn)行結(jié)果:

$ python string_processor.py

Original: hOWz It   GoInG?
After uppercase: HOWZ IT   GOING?
After lowercase: howz it   going?
After uppercase then capitalize: Howz it   going?
After delspace: hOWzItGoInG?

Original: The   QUIck  brOWn     fOx
After uppercase: THE   QUICK  BROWN     FOX
After lowercase: the   quick  brown     fox
After uppercase then capitalize: The   quick  brown     fox
After delspace: TheQUIckbrOWnfOx

綜上,我們可以發(fā)現(xiàn),方法鏈有其用處,不過過度使用可能不太好。

如何在Python中使用方法鏈?相信大家都有了一個(gè)大概的思路,希望本文所述對(duì)大家學(xué)習(xí)有所幫助。

相關(guān)文章

  • python中賦值語句的特點(diǎn)和形式

    python中賦值語句的特點(diǎn)和形式

    這篇文章主要介紹了python中賦值語句的特點(diǎn)和形式,文中介紹了多目標(biāo)賦值的共享引用問題,多目標(biāo)賦值其實(shí)是多個(gè)目標(biāo)對(duì)同一個(gè)內(nèi)存空間的引用,這里要分兩種情況,當(dāng)被引用對(duì)象是不可變對(duì)象時(shí)則不存在問題,感興趣的朋友跟隨小編一起看看吧
    2023-12-12
  • pandas 對(duì)group進(jìn)行聚合的例子

    pandas 對(duì)group進(jìn)行聚合的例子

    今天小編就為大家分享一篇pandas 對(duì)group進(jìn)行聚合的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python入門教程之Python的安裝下載配置

    Python入門教程之Python的安裝下載配置

    這篇文章主要介紹了Python入門教程之Python的安裝下載配置,Python是一門非常強(qiáng)大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • Python字符串和正則表達(dá)式中的反斜杠(''\'')問題詳解

    Python字符串和正則表達(dá)式中的反斜杠(''\'')問題詳解

    在本篇文章里小編給大家整理的是關(guān)于Python字符串和正則表達(dá)式中的反斜杠('\')問題以及相關(guān)知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • python實(shí)現(xiàn)根據(jù)指定字符截取對(duì)應(yīng)的行的內(nèi)容方法

    python實(shí)現(xiàn)根據(jù)指定字符截取對(duì)應(yīng)的行的內(nèi)容方法

    今天小編就為大家分享一篇python實(shí)現(xiàn)根據(jù)指定字符截取對(duì)應(yīng)的行的內(nèi)容方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python?Web開發(fā)通信協(xié)議WSGI?uWSGI?uwsgi使用對(duì)比全面介紹

    Python?Web開發(fā)通信協(xié)議WSGI?uWSGI?uwsgi使用對(duì)比全面介紹

    這篇文章主要為大家介紹了Python?Web開發(fā)通信協(xié)議WSGI?uWSGI?uwsgi使用對(duì)比全面介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 在Django中輸出matplotlib生成的圖片方法

    在Django中輸出matplotlib生成的圖片方法

    今天小編就為大家分享一篇在Django中輸出matplotlib生成的圖片方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python入門教程(十九)python的函數(shù)詳解

    Python入門教程(十九)python的函數(shù)詳解

    這篇文章主要介紹了Python入門教程(十九)python的函數(shù),函數(shù)是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段,需要的朋友可以參考下
    2023-04-04
  • 一文了解Python?流程控制

    一文了解Python?流程控制

    這篇文章主要介紹了一文了解Python?流程控制,Python?中有while和for兩種循環(huán)機(jī)制,其中while循環(huán)是條件循環(huán),文章通過展開循環(huán)內(nèi)容展開控制流程詳情,需要的小伙伴可以參考一下
    2022-05-05
  • python用pandas數(shù)據(jù)加載、存儲(chǔ)與文件格式的實(shí)例

    python用pandas數(shù)據(jù)加載、存儲(chǔ)與文件格式的實(shí)例

    今天小編就為大家分享一篇python用pandas數(shù)據(jù)加載、存儲(chǔ)與文件格式的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12

最新評(píng)論