50292


Python2.7.10/初心者  
GitHubからimportしてきた関数についての質問です。  
Card('A')この様な関数からAを取り出すには、どの様にすればいいですか。

[code]

    from poker import Card
    
    deck = list(Card)
    hand = [deck.pop() for __ in range(2)]
    
[/code]

このhandに入っているCard('A')です。  
返信の回答になっているか分かりませんがよろしくお願いします。


CC BY-SA 4.0
2018-11-11T20:25:35.870
50221
2018-11-13T12:34:36.067
2018-11-13T11:11:49.820
3060
30946
question
python python2
文字の取り出し方


次のように`rank.val`でトランプの数字を`A`のような文字にしたものが取得できます。また、str(Card(u'As').rank)でも同じように取得できます。str(Card(u'As'))とすると'A♠'が取得できるのでstr(Card(u'As'))[0]でも取得可能です。

[code]

    c = Card(u'As')
    s = c.rank.val
    
[/code]

なお、python2.7の場合、`rank.val`で取得すると文字コードがunicodeで、`str`を使うと文字コードが'utf-8'になることに注意してください。

理由は、Cardの最初の文字はRankを表しますが、そのクラスRankが以下のように定義されています。<https://github.com/pokerregion/poker/blob/master/poker/card.py>

[code]

    class Rank(PokerEnum):
        __order__ = 'DEUCE THREE FOUR FIVE SIX SEVEN EIGHT NINE TEN JACK QUEEN KING ACE'
    
        DEUCE = '2', 2
        #中略
        NINE = '9', 9
        TEN = 'T', 10
        JACK = 'J',
        QUEEN = 'Q',
        KING = 'K',
        ACE = 'A', 1
    
[/code]

そして、クラスRankが承継しているクラスPokerEnumをみると、Rankの最初の値を返す`val`というプロパティが定義されています。
<https://github.com/pokerregion/poker/blob/master/poker/_common.py>

[code]

    class PokerEnum(_OrderableMixin, enum.Enum):
        __metaclass__ = _PokerEnumMeta
    
        def __unicode__(self):
            return unicode(self._value_[0])
    
        def __str__(self):
            return unicode(self).encode('utf-8')
    
        # 中略
    
        @property
        def val(self):
            """The first value of the Enum member."""
            return self._value_[0]
    
[/code]


CC BY-SA 4.0
2018-11-13T11:18:31.770
50292
2018-11-13T12:34:36.067
2018-11-13T12:34:36.067
15171
15171
50221
answer