国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中方法鏈的使用方法

2020-01-04 17:42:38
字體:
來源:轉載
供稿:網友
這篇文章主要為大家詳細介紹了Python中方法鏈的使用方法,方法鏈(method chaining)是面向對象的編程語言中的一種常見語法,對方法鏈感興趣的小伙伴們可以參考一下
 

方法鏈(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 copyclass 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.pyOriginal: 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     fOxAfter uppercase: THE   QUICK  BROWN     FOXAfter lowercase: the   quick  brown     foxAfter uppercase then capitalize: The   quick  brown     foxAfter delspace: TheQUIckbrOWnfOx

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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 姜堰市| 芜湖市| 永兴县| 新巴尔虎左旗| 武乡县| 哈巴河县| 堆龙德庆县| 高雄市| 麻阳| 广平县| 隆回县| 沂南县| 平乐县| 武城县| 蒙城县| 盘锦市| 黄冈市| 滕州市| 大化| 长海县| 仁布县| 五常市| 鄢陵县| 海阳市| 茶陵县| 周口市| 万源市| 饶平县| 黎川县| 乌拉特前旗| 安平县| 合阳县| 满洲里市| 琼中| 时尚| 申扎县| 太保市| 新巴尔虎左旗| 新田县| 株洲市| 岱山县|