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

Python工廠函數用法實例分析

 更新時間:2018年05月14日 08:57:24   作者:grey_csdn  
這篇文章主要介紹了Python工廠函數用法,結合實例形式分析了Python工廠函數的概念、功能、使用方法及相關注意事項,需要的朋友可以參考下

本文實例講述了Python工廠函數用法。分享給大家供大家參考,具體如下:

參考了很多代碼、別人的文章以及書籍,最后自己做了適合自己理解的一種理解總結方式。

很多人說,工廠函數看上去像函數,其實是類。我覺得這種方法有些牽強,雖說在OOP中Python有其自己對類以及對象的定義。在一定程度上這么說是可以的。

我個人的理解,既然叫做工廠函數,那么這一定是一個函數。不過,看了許多例子后發(fā)現,其實工廠函數基本上都是帶有返回對象的。而這些返回對象則是通過調用一種或者多種類來創(chuàng)建的對象。

例如,有如下代碼:

#!/usr/bin/python
class Card:
    def __init__(self,rank,suit):
       self.suit = suit
       self.rank = rank
       self.hard,self.soft =self._points()
classNumberCard(Card):
    def _points(self):
       returnint(self.rank),int(self.rank)
classAceCard(Card):
    def _points(self):
       return 1,11
classFaceCard(Card):
    def _points(self):
       return 10,10
class Suit:
    def __init__(self,name,symbol):
       self.name = name
       self.symbol = symbol
defcard(rank,suit):
    if rank == 1:
       return AceCard('A',suit)
    elif 2 <= rank < 11:
       return NumberCard(str(rank),suit)
    elif 11 <= rank < 14:
       name ={11:'J',12:'Q',13:'K'}[rank]
       return FaceCard(name,suit)
    else:
       raise Exception("Rank out ofrange")

上面代碼中的card其實就是通過調用各種類來創(chuàng)建對象,而這個函數就是一個工廠函數。這種函數的設計,通常是為了滿足批量創(chuàng)建大量的對象或實例而創(chuàng)建。比如,創(chuàng)建所有的撲克牌對象可以通過如下代碼:

Club,Diamond,Heart,Spade=Suit('Club','CCC'),Suit('Diamond','DDD'),Suit('Heart','HHH'),Suit('Spade','SSS')
deck =[card(rank,suit)
    for rank in range(1,14)
       for suit in(Club,Diamond,Heart,Spade)]

上面的代碼,首先創(chuàng)建了不同的花色,然后通過復合for語句創(chuàng)建了整套撲克牌。如果簡化一些,自然也可以把花色存儲到一個專門的元組或者列表中增強一下可讀性。

以上是我自己通過不同的資料、文檔、書籍以及代碼示例總結出的Python中工廠函數的理解以及使用方式。應該沒有太大偏差了吧?如果有的話,后續(xù)繼續(xù)糾正吧,畢竟學習本身應該是一條曲折的路線。

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python函數使用技巧總結》、《Python數據結構與算法教程》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • Python實現打磚塊小游戲代碼實例

    Python實現打磚塊小游戲代碼實例

    這篇文章主要介紹了Python打磚塊小游戲,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • Python 轉換RGB顏色值的示例代碼

    Python 轉換RGB顏色值的示例代碼

    這篇文章主要介紹了Python 轉換RGB顏色值的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • python判斷單向鏈表是否包括環(huán),若包含則計算環(huán)入口的節(jié)點實例分析

    python判斷單向鏈表是否包括環(huán),若包含則計算環(huán)入口的節(jié)點實例分析

    這篇文章主要介紹了python判斷單向鏈表是否包括環(huán),若包含則計算環(huán)入口的節(jié)點,結合實例形式分析了Python針對單向鏈表的遍歷、判斷相關算法原理與使用技巧,需要的朋友可以參考下
    2019-10-10
  • python使用裝飾器作日志處理的方法

    python使用裝飾器作日志處理的方法

    今天小編就為大家分享一篇python使用裝飾器作日志處理的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python繪制三角函數圖(sin\cos\tan)并標注特定范圍的例子

    Python繪制三角函數圖(sin\cos\tan)并標注特定范圍的例子

    今天小編就為大家分享一篇Python繪制三角函數圖(sin\cos\tan)并標注特定范圍的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 在Python中使用MySQL--PyMySQL的基本使用方法

    在Python中使用MySQL--PyMySQL的基本使用方法

    PyMySQL 是在 Python3.x 版本中用于連接 MySQL 服務器的一個庫,Python2中則使用mysqldb。這篇文章主要介紹了在Python中使用MySQL--PyMySQL的基本使用,需要的朋友可以參考下
    2019-11-11
  • opencv調整圖像亮度對比度的示例代碼

    opencv調整圖像亮度對比度的示例代碼

    本文通過實例代碼給大家介紹了opencv調整圖像亮度對比度,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • JS設計模式之責任鏈模式實例詳解

    JS設計模式之責任鏈模式實例詳解

    這篇文章主要介紹了JS設計模式之責任鏈模式,結合實例形式詳細分析了責任鏈模式的概念、原理、功能、使用場景及相關操作技巧,需要的朋友可以參考下
    2018-02-02
  • Python接口自動化測試框架運行原理及流程

    Python接口自動化測試框架運行原理及流程

    這篇文章主要介紹了Python接口自動化測試框架運行原理及流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • python正則表達式實現自動化編程

    python正則表達式實現自動化編程

    這篇文章主要介紹了python正則表達式實現自動化編程,re模塊的compile()方法是構成正則表達式的方法,向compile()傳入一個字符串表示正則表達式,該方法返回一個Regex模式的對象,需要的朋友可以參考下
    2023-01-01

最新評論