zoukankan      html  css  js  c++  java
  • 面向对象:两手交换牌

    封装思想、构造函数===
    第1题.问题:两手交换牌

    1.定义类(个人理解:指代具体事物的单体,属性指的是类的单体的构成部分,题目中明显看到的有手和牌两个事物,以及交换这个动作,那么我们就知道交换的动作是人制造的,然后手有牌,牌有花色和数字,之所以把人牵扯进来,是因为交换的动作需要人来进行,而动作可以视为人这个类的一个函数,所以需要加入人的类)
    1)定义牌类(一张牌分为颜色和数字,所以需要做拼接)
    属性:花色、数字(一般赋值为空,或设置变量,不会赋具体数值,具体数值由对象来做)

    2)定义手类(这里指的是一只手,而发生交换这个动作必须要人的两只手,不需要创建两个相同的类,所以必然需要创建两个对象)
    属性:卡牌

    3)定义人类(一个人类有两只手,所以属性中需要分别定义左手和右手用来组成人类的手部)
    属性:左手、右手(变量、构造函数)
    动作:交换卡牌(函数)

    2.创建类和函数

    1)创建卡牌类
    定义属性:分为花色和数字
    class pai: #创建牌类
    def init(self): #创建构造函数
    self.colors=None #定义牌的花色变量为空
    self.nums=None #定义牌的数字变量为空

    2)创建手类
    定义属性:牌
    class hand: #创建手类
    def init(self): #定义构造函数
    self.pai="" #定义牌变量为空

    3)创建人类
    定义属性:左手和右手
    class Persion: #创建人类
    def init(self): #创建构造函数
    self.left_hand=None #定义左手变量为空
    self.right_hand=None #定义右手变量为空

    创建动作:交换
    def change(self): #创建函数
    c=self.left_hand #将变量c赋值为左手
    self.left_hand=self.right_hand #将变量左手赋值为变量右手
    self.right_hand=c #将变量c赋值为右手

    3.创建对象
    1)卡牌对象
    第一个牌对象(第一张牌)
    p1=pai() #创建牌类对象
    p1.colors="黑" #将color赋值为黑
    p1.nums="3" #将nums赋值为3

    第二个牌对象(第二张牌)
    p2=pai() #创建牌类对象
    p2.colors="黑" #将color赋值为黑
    p2.nums="4" #将nums赋值为4

    2)手类对象
    第一个手对象(第一只手)
    l=hand() #创建手类对象(左手)
    l.pai=p1.colors+p1.nums #将牌的变量赋值为牌类的变量花色和数字的拼接(l为对象,pai为类中定义的构造函数变量,l.pai就相当于self.pai,这里是讲类中的变量模板拿出来进行赋值,类里面的self.pai为空值,这里就是通过对象,将其调用进行具体赋值了,这里有两只手,就对类中的变量进行两次赋值,两次对象的赋值都是独立进行的,左手赋值会保持一个变量,右手赋值会再保持一个变量,这也是扩展性的一个体现,不需要更改类里面的模板,只需要通过创建对象就可以不断的扩展

    第二个手对象(第二只手)
    r=hand() #创建手类对象(右手)
    r.pai=p2.colors+p2.nums #将牌的变量赋值为牌类的变量花色和数字的拼接

    3)人类对象
    d1=Persion() #创建人类对象
    d1.right_hand=l #将右手赋值给手类(左手)对象
    d1.left_hand=r #将左手赋值给手类(右手)对象
    d1.change() #将左右手交换(调用交换函数)
    print(d1.left_hand.pai,d1.right_hand.pai) #打印左手和右手的牌

  • 相关阅读:
    python 并发编程 多线程 event
    python 并发编程 多线程 定时器
    python 并发编程 多线程 信号量
    linux top 查看CPU命令
    python 并发编程 多线程 GIL与多线程
    python 并发编程 多线程 死锁现象与递归锁
    python 并发编程 多线程 GIL与Lock
    python GIL全局解释器锁与互斥锁 目录
    python 并发编程 多线程 GIL全局解释器锁基本概念
    执行python程序 出现三部曲
  • 原文地址:https://www.cnblogs.com/endmoon/p/9439496.html
Copyright © 2011-2022 走看看