欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

pyhton 面向对象之 小明左右手换牌

程序员文章站 2022-03-22 13:21:34
'''#左右手交换牌 案列#小明手里有俩张牌,左手红桃♥K,右手黑桃♠A,小明交换俩手的牌后,手里分别是什么?人类: 属性:小明,左手,右手 行为:展示手里的牌, 交换手里的牌手类: 属性:牌 行为:手里拿着扑克牌牌类: 属性:颜色,数字(红桃♥K ,黑桃♠A)思路: 先找到对象:左手,右手,♥K, ......

'''
#左右手交换牌 案列
#小明手里有俩张牌,左手红桃♥k,右手黑桃♠a,小明交换俩手的牌后,手里分别是什么?

人类:
    属性:小明,左手,右手
    行为:展示手里的牌, 交换手里的牌
手类:
    属性:牌
    行为:手里拿着扑克牌
牌类:
    属性:颜色,数字(红桃♥k ,黑桃♠a)


思路:
    先找到对象:左手,右手,♥k,黑桃a,小明
    根据对象抽出对应的类:人,手,牌
    根据需要写出相应地逻辑,很可能反过来完善类的设计
    按照题目要求创建相关对象,调用相关方法,实现相关功能


'''

 

   #扑克类
    class poker:
    
        def __init__(self,color,num):
            self.color = color
            self.num = num
    
        def __str__(self):
            return '{}{}'.format(self.color,self.num)
    #创建牌类对象
    p1 = poker('♥','k')
    p2 = poker('♠','a')
    
    
    
    #手类
    class hond:
        def __init__(self,poker):
            self.poker = poker
    
        def hold_poker(self,poker):
            self.poker = poker
    
    #创建左右手对象
    life_hond = hond(p1)
    right_hond = hond(p2)
    # print(life_hond)
    # print(right_hond)
    
    #人类
    class person:
    
        def __init__(self,name,life_fond,right_fond):
            self.name = name
            self.life_fond = life_fond
            self.right_fond = right_fond
    
        #展示手里的牌
        def show(self):
            print('{}张开双手'.format(self.name),end='')
            print('左手:{}'.format(self.life_fond.poker),end=',')
            print('右手:{}'.format(self.right_fond.poker))
    
        #交换手里的牌
        def swap(self):
            self.life_fond.poker,self.right_fond.poker = self.right_fond.poker,self.life_fond.poker
            print('{}交换俩手的牌'.format(self.name))
    
    #创建小明对象
    xiaoming = person('小明',life_hond,right_hond)
    
    #展示手里的牌
    xiaoming.show()
    
    #交换手里的牌
    
    xiaoming.swap()
    
    #在展示手里的牌
    
    xiaoming.show()