亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python中方法鏈的使用方法

系統 1735 0

方法鏈(method chaining) 是面向對象的編程語言中的一種常見語法,可以讓開發者在只引用對象一次的情況下,對同一個對象進行多次方法調用。舉個例子:

假設我們有一個Foo類,其中包含有兩個方法――bar和baz。

我們創建一個Foo類的實例:

            
foo = Foo()
          

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

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

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

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

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

下面是在Python中實現方法鏈的一個示例:

            
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.


          

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


          

下面是這個程序的運行結果:

            
$ 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


          

綜上,我們可以發現,方法鏈有其用處,不過過度使用可能不太好。

如何在Python中使用方法鏈?相信大家都有了一個大概的思路,希望本文所述對大家學習有所幫助。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 精品无人区乱码1区2区3区在线 | 亚洲伊人国产 | 在线视频一区二区日韩国产 | 欧美一级欧美一级毛片 | 亚洲在线成人 | 国产欧美精品一区二区色综合 | 手机看片高清日韩精品 | 国产成人一区二区三区视频免费蜜 | 99久久综合给久久精品 | 99热成人精品国产免国语的 | 一级国产精品一级国产精品片 | 中文字幕精品在线视频 | 中文字幕在线二区 | 极品精品国产超清自在线观看 | 国产精品视频免费 | 欧美操操 | 国产伦一区二区三区免费 | 国产亚洲综合在线 | 欧美日韩在大午夜爽爽影院 | 天天色综合天天 | 亚洲综合激情视频 | 日本亚洲精品一区二区三区 | 欧美成人 一区二区三区 | 天天做天天爱天天影视综合 | a毛片在线还看免费网站 | 国产精品拍自在线观看 | 奇米视频7777 | 国产视频一区二区三区四区 | 日日摸夜夜添夜夜添毛片 | 欧美成人精品一区二三区在线观看 | 久久久久久久免费 | 免费99视频 | 久久久毛片免费全部播放 | 免费视频久久看 | 在线综合+亚洲+欧美中文字幕 | 亚洲欧美另类久久久精品能播放的 | 国产成人在线视频观看 | 九色九色九色在线综合888 | 国产精品免费看香蕉 | 成人免费一区二区三区在线观看 | 一级特黄aa大片一又好看 |