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

首頁 > 編程 > Python > 正文

Python工廠函數(shù)用法實(shí)例分析

2020-02-23 00:06:42
字體:
供稿:網(wǎng)友

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

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

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

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

例如,有如下代碼:

#!/usr/bin/pythonclass 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,11classFaceCard(Card):    def _points(self):       return 10,10class Suit:    def __init__(self,name,symbol):       self.name = name       self.symbol = symboldefcard(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其實(shí)就是通過調(diào)用各種類來創(chuàng)建對象,而這個(gè)函數(shù)就是一個(gè)工廠函數(shù)。這種函數(shù)的設(shè)計(jì),通常是為了滿足批量創(chuàng)建大量的對象或?qū)嵗鴦?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)建了不同的花色,然后通過復(fù)合for語句創(chuàng)建了整套撲克牌。如果簡化一些,自然也可以把花色存儲(chǔ)到一個(gè)專門的元組或者列表中增強(qiáng)一下可讀性。

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

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對大家Python程序設(shè)計(jì)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 剑河县| 津市市| 泌阳县| 兴文县| 永平县| 红桥区| 泽普县| 怀柔区| 泾川县| 仙桃市| 潼关县| 双鸭山市| 工布江达县| 昌江| 松江区| 筠连县| 宿迁市| 达拉特旗| 苍南县| 盐津县| 余江县| 新干县| 石景山区| 闻喜县| 新巴尔虎右旗| 镇坪县| 迁安市| 汉川市| 温宿县| 新民市| 阜城县| 彰武县| 永嘉县| 额尔古纳市| 南投市| 安乡县| 甘孜县| 榆中县| 渭源县| 永吉县| 耒阳市|