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

适合新手的python练习(6)

程序员文章站 2022-09-14 08:54:04
过家家游戏家庭设定:在某个家庭中有三个成员,父亲、母亲和儿子,三者组成一个家庭,每个人都有自己的姓名、年龄和一些属于自己的小秘密。实现方法:因为一个家庭里有三个成员,每个成员都有自己的一些特性,但又都隶属于这个家庭。所以家庭可以定义为一个父类,父类的属性是家庭中每个成员共有的特性;每个成员各定义为一个子类,子类除了具有父类的所有属性外,还具有一些自己特有的属性。具体代码如下:import randomclass Family(): # 自定义初始化方法 def __init__...

过家家游戏

家庭设定:

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

实现方法:

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

具体代码如下:

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时就会自动生成一个随机整数并将数值返回,这个是要用于家庭资产的计算。

适合新手的python练习(6)

本文地址:https://blog.csdn.net/weixin_43715140/article/details/107165784