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

Python中方法鏈的使用方法

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

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

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

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

foo = Foo()

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

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

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

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

請注意,方法鏈的一個限制是,只能用在不需要返回其他值的方法上,因為你需要返回self對象。即使Python支持用一個return語句返回多個值,也可能無法解決這個問題。

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

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.

上面那種實現(xiàn)可能太簡單了。下面我們來看一種更加現(xiàn)實的方法鏈使用方法:編寫一個字符串處理程序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()

下面是這個程序的運行結(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中使用方法鏈?相信大家都有了一個大概的思路,希望本文所述對大家學習有所幫助。

相關(guān)文章

最新評論

无极县| 兴宁市| 子洲县| 广德县| 二手房| 于都县| 县级市| 时尚| 老河口市| 肃北| 通河县| 泰和县| 屏山县| 周至县| 来安县| 威海市| 邯郸县| 阿拉尔市| 吴川市| 双峰县| 五峰| 集贤县| 朝阳县| 瑞金市| 青阳县| 多伦县| 河津市| 玛纳斯县| 连云港市| 台州市| 阿图什市| 墨玉县| 祁东县| 仙居县| 乌鲁木齐县| 镇赉县| 淳化县| 曲阜市| 东丽区| 巴楚县| 鞍山市|