面向对象练习

在这里插入图片描述

class Person:
    def __init__(self, name, weight):
        # self.属性 = 形参
        self.name = name
        self.weight = weight

    def __str__(self):
        return "我的名字叫 %s 体重是 %s 公斤" % ( self.name, self.weight)

    def run(self):
        print("%s 爱跑步,跑步锻炼身体" % self.name)
        self.weight -= 0.5

    def eat(self):
        print("%s 是吃货,吃完这顿再减肥" % self.name)
        self.weight += 1


xiaoming = Person("小明", 75.0)
xiaoming.run()
xiaoming.eat()
print(xiaoming)

在这里插入图片描述

class Person:
    def __init__(self, name, weight):
        # self.属性 = 形参
        self.name = name
        self.weight = weight

    def __str__(self):
        return "我的名字叫 %s 体重是 %s 公斤" % ( self.name, self.weight)

    def run(self):
        print("%s 爱跑步,跑步锻炼身体" % self.name)
        self.weight -= 0.5

    def eat(self):
        print("%s 是吃货,吃完这顿再减肥" % self.name)
        self.weight += 1


xiaoming = Person("小明", 75.0)

xiaoming.run()
xiaoming.eat()
print(xiaoming)
xiamei = Person("小美", 45.0)

xiamei.eat()
xiamei.run()
print(xiamei)
print(xiaoming)


在这里插入图片描述
在这里插入图片描述

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

    def __str__(self):
        return "[%s]占地%.2f" % (self.name, self.area)


class House:

    def __init__(self, house_type, area):
        self.house_type =house_type
        self.area = area
        # 剩余面积
        self.free_area = area
        # 家具名称列表
        self.item_list = []

    def __str__(self):
        # Python 能够自动将一对小括号内的代码链接在一起
        return ("户型:%s\n总面积:%.2f[剩余:% .2f]\n家具:%s"
                % (self.house_type, self.area, self.free_area, self.item_list))

    def add_item(self, item):

        print("要添加 % s" % item)


# 1. 创建家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)
print(bed)
print(chest)

# 2.创建房子的对象
my_home = House("两室一厅", 60)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)

在这里插入图片描述

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

    def __str__(self):
        return "[%s]占地%.2f" % (self.name, self.area)


class House:

    def __init__(self, house_type, area):
        self.house_type = house_type
        self.area = area
        # 剩余面积
        self.free_area = area
        # 家具名称列表
        self.item_list = []

    def __str__(self):
        # Python 能够自动将一对小括号内的代码链接在一起
        return ("户型:%s\n总面积:%.2f[剩余:% .2f]\n家具:%s"
                % (self.house_type, self.area, self.free_area, self.item_list))

    def add_item(self, item):

        print("要添加 % s" % item)
        # 1. 判断家具的面积
        if item.area > self.free_area:
            print(" %s 的面积太大了,无法添加" % item.name)
            return
        # 2. 将家具的名称添加到家具
        self.item_list.append(item.name)

        # 3. 计算剩余面积
        self.free_area -= item.area


# 1. 创建家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)
# print(bed)
# print(chest)
# print(table)
# 2.创建房子的对象
my_home = House("两室一厅", 60)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)

在这里插入图片描述

class Gun:
    def __init__(self, model):

        # 枪的型号
        self.model = model
        # 子弹的数量
        self.bullet_conunt = 0

    def add_bullet(self, count):
        self.bullet_conunt += count

    def shoot(self):
        # 1.判断子弹数量
        if self.bullet_conunt <= 0:
            print("[%s 没有子弹了...]" % self.model)
            return
        # 2. 发射子弹
        self.bullet_conunt -= 1
        # 3. 提示发射信息
        print("[%s] 突突突...[%d]" % (self.model, self.bullet_conunt))


# 1. 创建枪类
ak47 = Gun("AK47")
ak47.add_bullet(50)
ak47.shoot()

在这里插入图片描述

class Gun:
    def __init__(self, model):

        # 枪的型号
        self.model = model
        # 子弹的数量
        self.bullet_conunt = 0

    def add_bullet(self, count):
        self.bullet_conunt += count

    def shoot(self):
        # 1.判断子弹数量
        if self.bullet_conunt <= 0:
            print("[%s 没有子弹了...]" % self.model)
            return
        # 2. 发射子弹
        self.bullet_conunt -= 1
        # 3. 提示发射信息
        print("[%s] 突突突...[%d]" % (self.model, self.bullet_conunt))


class Soldier:
    def __init__(self, name):
        # 1.新宾的姓名
        self.name = name
        # 2.枪
        self.gun = None

    def fire(self):
        # 1. 判断士兵是否有枪
        if self.gun == None:

            print("%s 还没有枪.." % self.name)
            return
        # 2. 高喊口号
        print("冲啊。。。[%s]" % self.name)
        # 3.让枪装填子弹
        self.gun.add_bullet(50)
        # 让枪发射子弹
        self.gun.shoot()


# 1. 创建枪类
ak47 = Gun("AK47")

# 2.创建许三多
xushaoduo = Soldier("许三多")
xushaoduo.gun = ak47
xushaoduo.fire()



在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Women:

    def __init__(self, name):

        self.name = name
        self.__age = 18

    def __secret(self):
        # 在对象的方法的内部,是可以访问私有的属性
        print("%s 的年龄是 %d" % (self.name, self.__age))


xiaofang = Women("小芳")
# 私有属性,在外界不能被直接访问
# print(xiaofang.__age)
# 私有的方法,同样不允许在外界直接访问
# xiaofang.__secret()



在这里插入图片描述

class Women:

    def __init__(self, name):

        self.name = name
        self.__age = 18

    def __secret(self):
        # 在对象的方法的内部,是可以访问私有的属性
        print("%s 的年龄是 %d" % (self.name, self.__age))


xiaofang = Women("小芳")
# 伪私有属性,在外界不能被直接访问
print(xiaofang._Women__age)
# 伪私有的方法,同样不允许在外界直接访问
xiaofang._Women__secret()



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值