一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python工廠函數用法實例分析

Python工廠函數用法實例分析

2021-02-20 00:45grey_csdn Python

這篇文章主要介紹了Python工廠函數用法,結合實例形式分析了Python工廠函數的概念、功能、使用方法及相關注意事項,需要的朋友可以參考下

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

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

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

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

例如,有如下代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/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其實就是通過調用各種類來創建對象,而這個函數就是一個工廠函數。這種函數的設計,通常是為了滿足批量創建大量的對象或實例而創建。比如,創建所有的撲克牌對象可以通過如下代碼:

?
1
2
3
4
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)]

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

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

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

原文鏈接:https://blog.csdn.net/grey_csdn/article/details/74279346

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本免费在线观看 | 欧美日韩一区二区中文字幕视频 | 胸大的姑娘中文字幕视频 | 四虎影视e456fcom四虎影视 | 欧美精品一区二区三区免费观看 | 亚洲成人精品久久 | 亚洲午夜久久久久久91 | 3d动漫美女物被遭强视频 | 高清不卡日本v在线二区 | 17岁俄罗斯csgo | 欧美疯狂做爰3xxx | 青春草在线观看视频 | 欧美日韩中文字幕在线视频 | 久久婷婷五月综合色精品首页 | 99香蕉网 | 四虎 2022 永久网站 | 亚洲国产日韩欧美在线vip1区 | 国产欧美又粗又猛又爽老 | 亚洲国产自拍在线 | 手机看片国产免费久久网 | 四虎国产精品免费久久麻豆 | 9久re在线观看视频精品 | 亚洲男人第一天堂 | 国产高清在线精品一区二区 | 脱了白丝校花的内裤猛烈进入 | 成人影院在线观看 | 亚洲精品一二三四区 | 久久视频在线视频 | 四缺一小说| 日本十大顶级绝伦推理片 | 成年人在线免费看 | 亚洲AV无码专区国产乱码网站 | 黑帮大佬与我的365天2标清中文 | 视频一本大道香蕉久在线播放 | 国产综合欧美日韩视频一区 | 问一问免费咨询 | 精品国产成人a区在线观看 精品高潮呻吟99AV无码视频 | 日韩欧美一卡二区 | 美女被草哭 | 校园高h | 国产精品久久久久aaaa |