面向对象-2-封装、身份运算符、私有属性和方法

在这里插入图片描述
做一个案例
在这里插入图片描述
名词是属性: 名字 体重
动词是方法: 吃 跑步

class Person:

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

    def __str__(self):
        return('我是%s,体重%.2f公斤' % (self.name,self.weight))

    def run(self):
        pass

    def eat(self):
        pass

xiaoming = Person('小明',75.0)

xiaoming.eat()
xiaoming.run()

print(xiaoming)

在这里插入图片描述
接着补充。

class Person:

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


    def __str__(self):
        return('我是%s,体重%.2f公斤' % (self.name,self.weight))


    def run(self):
        print('我爱跑步')
        self.weight -= 0.5


    def eat(self):
        print('我是吃货')
        self.weight += 1

xiaoming = Person('小明',75.0)

xiaoming.eat()
xiaoming.run()

print(xiaoming)

在这里插入图片描述
原始体重 75.0,跑一次步, 吃一次饭,体重为75.5
在这里插入图片描述

class Person:

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


    def __str__(self):
        return('我是%s,体重%.2f公斤' % (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.eat()
xiaoming.run()
print(xiaoming)

xiaomei = Person('小美',50)
xiaomei.run()
xiaomei.eat()
print(xiaomei)

在这里插入图片描述
再做一个案例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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_style, area):

        self.house_style = house_style
        self.area = area
        self.free_area = area
        self.item_list = []

    def __str__(self):

        return('户型: %s\n总面积: %.2f\n剩余面积: %.2f\n家具名称列表: %s'
               % (self.house_style,self.area,self.free_area,self.item_list))

    def add_item(self, item):

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

        if item.area >  self.free_area:
            print('%s 的面积太大了,摆放不开' % item.name)
            return
        else:
            self.item_list.append(item.name)
            self.free_area -= item.area


# 创建家具对象
bed = HouseItem('席梦思', 46)
chest = HouseItem('衣柜',20)
table = HouseItem('餐桌', 15)

# print(bed)
# print(chest)
# print(table)

# 创建家对象
my_house = House('两室一厅', 80)

my_house.add_item(bed)
my_house.add_item(chest)
my_house.add_item(table)

print(my_house)


在这里插入图片描述
再做一个案例:
在这里插入图片描述
在这里插入图片描述

class Gun:

    def __init__(self, modle):

        self.modle = modle
        self.bullet_count = 0

    def add_bullet(self, count):

        self.bullet_count += count

    def shoot(self):

        if self.bullet_count <= 0:

            print('%s 没有子弹了' % self.modle)
            return

        else:

            self.bullet_count -= 1
            print('%s突突突,还有%d颗子弹。' % (self.modle, self.bullet_count) )

ak47 = Gun('ak47')

ak47.shoot()
ak47.add_bullet(10)
ak47.shoot()
ak47.shoot()

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

class Gun:

    def __init__(self, modle):

        self.modle = modle
        self.bullet_count = 0

    def add_bullet(self, count):

        self.bullet_count += count

    def shoot(self):

        if self.bullet_count <= 0:

            print('%s 没有子弹了' % self.modle)
            return

        else:

            self.bullet_count -= 1
            print('%s 突突突,还有 %d 颗子弹。' % (self.modle, self.bullet_count) )

class Soldier:

    def __init__(self, name):

        self.name = name
        self.gun = None

    def fire(self):

        # 判断是否有枪
        if self.gun == None:

            print('%s 还没有枪。' % self.name)

            return

        # 喊口号

        print('%s 冲啊!!!' % self.name)

        # 装子弹
        if self.gun.bullet_count <= 0:

            self.gun.add_bullet(10)

        # 发射子弹
        self.gun.shoot()


ak47 = Gun('ak47')

xusanduo = Soldier('许三多')

xusanduo.gun = ak47

xusanduo.fire()
xusanduo.fire()
xusanduo.fire()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以这里建议使用 is 。
在这里插入图片描述

class Women:

    def __init__(self, name, age):

        self.name = name
        self.__age = age

    def secret(self):

        print('%s 的年龄是 %d 。 ' % (self.name, self.__age))

xiaomei = Women('小美',18)

print(xiaomei.__age)

xiaomei.secret()

在这里插入图片描述
私有属性 __age 在外部不能访问。

class Women:

    def __init__(self, name, age):

        self.name = name
        self.__age = age

    def secret(self):

        print('%s 的年龄是 %d 。 ' % (self.name, self.__age))

xiaomei = Women('小美',18)

xiaomei.secret()

在这里插入图片描述
私有属性 __age 在内部能访问。

class Women:

    def __init__(self, name, age):

        self.name = name
        self.__age = age

    def __secret(self):

        print('%s 的年龄是 %d 。 ' % (self.name, self.__age))

xiaomei = Women('小美',18)

xiaomei.__secret()

在这里插入图片描述
私有方法 __secret 在外部不能调用。

在这里插入图片描述

class Women:

    def __init__(self, name, age):

        self.name = name
        self.__age = age

    def __secret(self):

        print('%s 的年龄是 %d 。 ' % (self.name, self.__age))

xiaomei = Women('小美',18)
print(xiaomei._Women__age)
xiaomei._Women__secret()

在这里插入图片描述

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值