python基础:面对对象简单案例:买家具、人猿大战

这篇博客通过两个实例讲解Python的面向对象编程基础。首先,介绍了买家具的场景,强调了考虑户型、面积和地址等关键因素。接着,展示了人猿大战的模拟,定义了人类和猩猩类,包括它们的属性如生命值和攻击力,并演示了运算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、买家具
需要突出:户型,面积,地址

class House:

    def __init__(self, info, area, addr):
        self.info = info
        self.area = area
        self.addr = addr
        self.furniture_lst = []  # 用来保存家具名称

    # 添加家具
    def add_furniture(self, furniture):
        #  furniture   接收传进来的对象(实际上接受的是地址),例如床的对象,彩电对象等
        # self.furniture_lst = []   # 如果将列表放在此处,每次程序执行时,
        # 上次传递的对象被初始化,列表变量self.furniture_lst将会被重新赋值为
        # 一个空列表,将不会显示上一次添加的对象名称,只显示本次程序执行传递的对象
        self.area = self.area - furniture.area
        # house的剩余面积=house当前面积-家具面积
        self.furniture_lst.append(furniture.name)  # 将家具的名称添加到列表中

    def __str__(self):
        msg = '剩余面积{},户型是{},在{}买的房子'.format(self.area, self.info, self.addr)
        msg1 = '新添的设备{}'.format(self.furniture_lst)
        return msg + msg1

# 创建床类
class Bad:

    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        msg = '{}面积是{}平'.format(self.name, self.area)
        return msg


house = House('三室一厅', 130, '五方桥')
print(house)
bad = Bad('上下铺', 2)
print(bad)
house.add_furniture(bad)  # 将bad对象添加到house
print(house)
bad1 = Bad('双人床', 4)
house.add_furniture(bad1)  # 给房子再添加一个双人床
print(house)

运行结果:

剩余面积130,户型是三室一厅,在五方桥买的房子新添的设备[]
上下铺面积是2平
剩余面积128,户型是三室一厅,在五方桥买的房子新添的设备['上下铺']
剩余面积124,户型是三室一厅,在五方桥买的房子新添的设备['上下铺', '双人床']

‘’’
2、人猿大战
人类:name,affack,left 100,10 80(人类的生命值)=100-20(猩猩的攻击力)
猩猩类:name,affack,left 100,20

class Person:    # 创建人类
    def __init__(self, name, atk, left):    #初始化人类名字,攻击力,剩余生命值
        self.name = name
        self.atk = atk
        self.left = left

    def attack(self, star_star):  # 此函数为人猿大战函数,现在情况是人攻击猩猩,将创建的猿类对象star1对应的地址传给了star_star,以此可以在人类的函数体内调用star_star也就是猿类对象star1的函数属性
        star_star.left = star_star.left - self.atk
        #猿类对象star1剩余生命值就等于猿类对象star1函数体所对应的原始剩余生命值(star_star.left=star1.left=self.left)减去人类对象person所对应的函数体中对应的人类攻击力(self.atk)

    # def attack(self,person):  同理可以创建猩猩攻击人的函数
    #     person.left=person.left-star1.atk
    #人类对象person的剩余生命值就等于人类原始剩余生命值(self.name)减去猿类对象star_star对应的猿类函数体中的猿类攻击力即(star_star.atk)

    def __str__(self):     #以字符串形式输出
        msg = '{}的攻击力是{},剩余生命力{}'.format(self.name, self.atk, self.left)
        return msg


class Starstar():       #创建猿类
    def __init__(self, name, atk, left):  #初始化猿类名字,攻击力,剩余生命值
        self.name = name
        self.atk = atk
        self.left = left

    def __str__(self):  #以字符串形式输出猿类的特征
        msg = '{}的攻击力是{},剩余生命力{}'.format(self.name, self.atk, self.left)
        return msg


person = Person('诸葛亮', 10, 100)    #创建人类的对象
print(person)

star1 = Starstar('金刚', 20, 100)   #  创建猿类对象
print(star1)

person.attack(star1)  # 人攻击猩猩,将star1的地址传给了star_star
print(star1)         #最后打印结果在猿类函数体内执行

# person.attack(person)  # 猩猩攻击人
# print(person)

运行结果:

诸葛亮的攻击力是10,剩余生命力100
金刚的攻击力是20,剩余生命力100
金刚的攻击力是20,剩余生命力90
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值