__init__()方法创建常量清单
此文接上一篇文章:https://www.cnblogs.com/liveforlearn/p/15208631.html
这里使用花色的初始化作为创建常量对象的一个实例。
静态常量也正是构成策略或状态的一部分
定义花色类初始化常量清单
e.g:
1 # -*- ecoding: utf-8 -*- 2 # @ModuleName: constant_list 3 # @Function: 4 # @Author: 甲壳虫~~~ 5 # @Time: 2021/8/31 22:14 6 #@blog:https://www.cnblogs.com/liveforlearn 7 8 from lott_object_book.chapter1.samplest_demo import * 9 10 class Suit: 11 def __init__(self, name, symbol): 12 self.name = name 13 self.symbol = symbol 14 A = AceCard(‘A‘, ‘?‘) 15 J = FaceCard(‘J‘, ‘?‘) 16 Q = FaceCard(‘Q‘, ‘?‘) 17 N = NumberCard(‘8‘, ‘?‘) 18 cards = [A, J, Q, N] 19 #创建常量清单 20 Club, Diamond, Heart, Spade = Suit(‘Club‘, ‘?‘), Suit(‘Diamond‘, ‘?‘), 21 Suit(‘Heart‘, ‘?‘), Suit(‘Spade‘, ‘?‘) 22 A1 = AceCard(‘A‘, Spade) 23 J1 = FaceCard(‘J‘, Heart) 24 Q1 = FaceCard(‘Q‘, Diamond) 25 N1 = NumberCard(‘8‘, Club) 26 cards1 = [A1, J1, Q1, N1] 27 28 for card in cards: 29 print(card.rank, card.suit, card.hard, card.soft) 30 31 for card in cards1: 32 print(‘\n‘, card.rank, card.suit, card.hard, card.soft) 33 print(card.suit.symbol, card.suit.name)
输出如下
小结
创建常量清单,相比于简单的使用一个符号代替花色的实现方式并没有太大的优势。
这里只是最为一个示例:演示了如果在更复杂的情况下,可能需要创建一组策略或状态模式对象的集合。
如果把创建好的花色做缓存,构成一个常量池,使得在调用时,对象可以被重用,那么性能将得到很大的提升。
python中的“不可变对象”:
在python中这些对象,知识概念上的常量,他们仍然是可变的。(花色常量)
使用额外的代码实现是的这些对象成为完全不可变的可能会更好。