本文实例讲述了Python工厂函数用法。分享给大家供大家参考,具体如下:

参考了很多代码、别人的文章以及书籍,最后自己做了适合自己理解的一种理解总结方式。
很多人说,工厂函数看上去像函数,其实是类。我觉得这种方法有些牵强,虽说在OOP中Python有其自己对类以及对象的定义。在一定程度上这么说是可以的。
我个人的理解,既然叫做工厂函数,那么这一定是一个函数。不过,看了许多例子后发现,其实工厂函数基本上都是带有返回对象的。而这些返回对象则是通过调用一种或者多种类来创建的对象。
例如,有如下代码:
#!/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")