适合新手的python练习(6)

过家家游戏

家庭设定:

在某个家庭中有三个成员,父亲、母亲和儿子,三者组成一个家庭,每个人都有自己的姓名、年龄和一些属于自己的小秘密。

实现方法:

因为一个家庭里有三个成员,每个成员都有自己的一些特性,但又都隶属于这个家庭。所以家庭可以定义为一个父类,父类的属性是家庭中每个成员共有的特性;每个成员各定义为一个子类,子类除了具有父类的所有属性外,还具有一些自己特有的属性。

具体代码如下:

import random
class Family():
    # 自定义初始化方法
    def __init__(self, surname, address, income):
        """ 设置家庭姓氏 """
        self.surname = surname
        self.address = address
        self.income = income

class Father(Family):
    def __init__(self, name, age):
        """ 继承父类的动态属性 """
        super(Family, self).__init__()
        # 定义动态属性
        self.name = name
        self.age = age
        self.__secret = '我背着老婆藏了私房钱在自己的卡里'
    def action(self):
        money = random.randint(100, 1000)
        return money

class Mother(Family):
    def __init__(self, name, age):
        """ 继承父类的动态属性 """
        super(Family, self).__init__()
        # 定义动态属性
        self.name = name
        self.age = age
        self.__secret = '我知道老公用来藏私房钱的那张卡的密码'
    def action(self):
        money = random.randint(100, 500)
        return -money

class Son(Family):
    def __init__(self, name, age):
        """ 继承父类的动态属性 """
        super(Family, self).__init__()
        # 定义动态属性
        self.name = name
        self.age = age
        self.__secret = '我把爸爸的那张藏私房钱的卡绑定到了我的支付宝'
    def action(self):
        money = random.randint(0, 100)
        return -money

if __name__ == '__main__':
    # 将四个类实例化,生成对象
    family = Family('王', '广州市', 1000)
    father = Father('俊晖', 35)
    mother = Mother('明丽', 33)
    son = Son('天一', 10)

    # 家庭的自我介绍
    print('这是一个姓' + family.surname + '的家庭,他们生活在' + family.address)
    print('我是父亲—' + family.surname + father.name + ',今年' + str(father.age) + '岁。')
    print('我是母亲—' + mother.name + ',今年' + str(mother.age) + '岁。')
    print('我是儿子—' + family.surname + son.name + ',今年' + str(son.age) + '岁。')

    # 家庭费用开支
    father_money = father.action()
    family.income += father_money
    print('父亲今天赚了' + str(father_money) + '元,家庭资产剩余' + str(family.income))
    mother_money = mother.action()
    family.income += mother_money
    print('母亲今天花了' + str(-mother_money) + '元,家庭资产剩余' + str(family.income))
    son_money = son.action()
    family.income += son_money
    print('儿子今天花了' + str(-son_money) + '元,家庭资产剩余' + str(family.income))

    # 家庭成员的小秘密
    print('父亲告诉你一个小秘密:' + father._Father__secret)
    print('母亲告诉你一个小秘密:' + mother._Mother__secret)
    print('儿子告诉你一个小秘密:' + son._Son__secret)

代码解析:

我们总共定义了四个类,父类是Family,子类是Father、Mother和Son。代码中需要调用标准库random用于生成随机数字,作为家庭的日常收支情况。

Family类用于描述家庭的基本情况,如这个家庭的姓氏、住址和资产。在初始化方法里分别设置动态属性surname、address以及income,代表家庭的姓氏、住址和资产。

Father、Mother和Son类用于描述各个成员。在重写初始化方法的时候,使用**super(Family,self).init()**便可以把父类的初始化方法所定义的动态属性surname、address以及income一并继承到子类的初始化方法中。如果不是用super函数,子类重写初始化方法会覆盖父类的初始化方法。若想子类也继承父类的属性,要在子类重写初始化方法时重新定义父类的属性,要么就是用super函数继承。

每个子类都定义了动态属性name和age,私有属性__secret以及普通方法action。在子类实例化的时候需要设置动态属性name和age的属性值;私有属性__secret是通过强制性方法调用属性值;在调用普通方法action时就会自动生成一个随机整数并将数值返回,这个是要用于家庭资产的计算。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值